美文网首页
__block __weak __strong的使用

__block __weak __strong的使用

作者: 今昔往日梦与醒丶 | 来源:发表于2017-07-26 16:09 被阅读0次

    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后,为了保证使用时不会被释放,就需要添加该修饰符,让其在使用后再进行释放

    相关文章

      网友评论

          本文标题:__block __weak __strong的使用

          本文链接:https://www.haomeiwen.com/subject/zncokxtx.html