美文网首页
Block的循环引用

Block的循环引用

作者: 143db5b5572a | 来源:发表于2016-07-03 00:17 被阅读0次

    #warning如果block(block只要是copy的就会在堆中)在堆中, block引用外界的对象,会导致循环引用

    //    __weak IWCommonArrowItem *weakClearCache = clearCache;

    //    __weak IWGeneralViewController *weakSelf = self;

    // typeof可以获取括号中传递的值的真实类型

    //    typeof(10) a = 10; == int a = 10;

    //    __weak typeof(clearCache) weakClearCache = clearCache;

    //    __weak typeof(self) weakSelf = self;

    //如果是用__weak修饰,当对象销毁之后会自动将变量的值设置为nil

    //而如果__unsafe_unretained不会

    __unsafe_unretainedtypeof(clearCache) weakClearCache = clearCache;

    __unsafe_unretainedtypeof(self) weakSelf =self;

    /**

    如何在开发中,避免block出现循环引用呢

    1>每次碰到self的时候,要小心,需要思考一下

    2>充分利用dealloc方法

    3

    解决方法:

    __weak CZViewController *weakSelf = self;

    */

    //为了保证代码的安全性,苹果在设计block的时候

    // block引用外部变量时,默认会做copy操作,copy本身也会做一次强引用

    //在现在的代码中,如果block中有对self的强引用,出现循环引用的情况

    //解决方法,在oc中,对象默认都是强引用,__weak可以变成弱引用

    相关文章

      网友评论

          本文标题:Block的循环引用

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