__block __weak __strong的使用

1.__block:
     使用场景:block内部只能够访问来自block外部的变量,但是却不能够修改外部的变量,因为是将该外部变量拷贝到其数据结构中来访问的,数据是只读的,block内部不能修改外面的局部变量,如果需要修改来自block外部的变量的话,需要使用__block修饰,这样就可以在block中修改该外部变量了

2.__weak:

    使用场景:在使用Block时,有时候会用到self,Block内部对self默认都是强引用。在ARC下,编译器将Block从栈区拷贝到堆区,Block会强引用和持有self,而self 也会强引用和持有Block,于是就造成了循环引用。此时就需要使用__weak,在修饰变量时,修饰符修饰变量self,让 block 不强引用self,从而破除循环(你中有我,我中有你,然后谁都不会释放掉,内存泄露)


3.__strong:

使用场景:使用了__weak修饰self后,为了保证使用时不会被释放,就需要添加该修饰符,让其在使用后再进行释放

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容