block中使用self导致循环引用
这个问题相比大家都了解,并且也知道如何通过weakSelf strongSelf来解决循环引用。
接下来说一下我遇到的问题,前两天修改代码,有很多地方改成使用block,这就悲剧了。
有许多代码要拷贝到block中执行,里面有很多self,而且不止一处。
这难道要我一个一个的使用weakSelf strongSelf来替换一遍吗.
经过这两天的查找资料,发现了一个很靠谱的解决办法
@weakify @strongify登场
- (id)init {
self = [super init];
if (self) {
NSLog(@"self-class >>> %@",NSStringFromClass([self class]));
NSLog(@"super-class >>> %@",NSStringFromClass([super class]));
@weakify(self);
self.block = ^{
@strongify(self);
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[self test];
});
};
}
return self;
}
网友评论