美文网首页
关于block循环引用

关于block循环引用

作者: 此页空白 | 来源:发表于2018-03-20 16:00 被阅读0次

    如果在block中使用附有__strong修饰符的对象类型自动变量,那么当block从栈区拷贝到堆区时,该对象为block所持有。这样容易引起循环引用.

    __block,__weak和__unsafe_unretained都可避免循环引用,可他们有何不同呢?

    使用__block的优点如下:

    通过__block变量控制对象的持有期间,再不能使用__weak修饰符的环境中不使用__unsafe_unretained的修饰符即可.(不必担心悬垂指针)

    在执行block时可动态性的决定是否将nil或其他的对象赋值在__block变量中

    使用__block的缺点如下:

    为避免循环引用必须执行block

    在执行了block语法,却不执行block的路径时,无法避免循环引用。若由于block引发的循环引用时,根据block的用途选择使用__block变量,__weak修饰符或者__unsafe_unretained修饰符来避免循环引用。

    相关文章

      网友评论

          本文标题:关于block循环引用

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