block中的weak&strong self

在block中使用self的时候,需要在外部将self弱化,从而不让block持有self,避免循环引用。循环引用的原因是因为self是持有block的,如果又让block持有了self,那么就会造成循环引用。而进入block后,如果用到self,则需要将self强化,是为了避免self在block执行过程中释放。block执行玩strongSelf后会自动释放。
代码如下

__weak __typeof(self)weakSelf = self;
self.xxblock = ^{
  __strong __typeof(weakSelf)strongSelf = weakSelf;
...
}

这里面用到了typeof(self),表示表明类型。如果self是UIViewController 那么--weak __typeof(self)weakSelf = self;等价于__weak UIViewController *weakSelf = self;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容