正文
@interface
Light
:
NSObject
@property
(
nonatomic
,
copy
)
NSString
*color;
@property
(
nonatomic
,
copy
)
void
(^block)(
void
);
@end
------------Light.m------------
#import
"Light.h"
@implementation
Light
@end
------------main.m------------
#import
"Light.h"
int
main(
int
argc,
char
* argv[]) {
@autoreleasepool
{
Light *loveLight = [Light alloc] init];
loveLight.color =
@"green"
;
loveLight.block = ^{
NSLog
(
@"%@"
,loveLight.color);
};
loveLight.block();
}
}
复制代码
我们在上面的代码中创建了一个Light(光)类,并声明两个属性color(颜色)及block。然后我们实例化一个对象loveLight并对其属性赋值,实现并调用block,造成循环引用。
然后我们通过clang代码,了解这段代码内部的部分实现:
struct