__block 和 weak 在ARC下的主要事项

1、在ARC下,成员变量使用_block修饰,在block里面访问会造成retain cycle,不管是用self.xxx或者_xxxx;
使用weak不会造成retain cycle
2、在ARC下,外部局部变量使用_block,会根据外部变量的类型,在block会进行一次拷贝,值类型就会拷贝值,指针类型就是改变指向的地址,不会造成cycle

3、MRC中使用block,为了避免在block中retain外部的变量导致引用计数的增加,我们往往要在block中使用的变量前加上 __block 关键字,这样就不会retain了,比如__block typeof(self) weakSelf = self;

4、一般用weak修饰就可以解决问题 block中如果执行耗时操作或者是VC释放之后任然需要完成的操作 block外部用weak修饰之后 在block中还需要用strong再做一个强引用

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

相关阅读更多精彩内容

友情链接更多精彩内容