美文网首页
Block(互相持有) 内Strong强引用 释放

Block(互相持有) 内Strong强引用 释放

作者: ZCY_YAM | 来源:发表于2017-03-28 10:20 被阅读45次

    Block 作为块语法 使用 __weak __strong

      想必 在block 外使用weak 大家都明白,
      最近使用的时候在内部strong  发现 block 持有对象 这样又出现相互持有的鬼东西
      最后发现自己错
    
      原来是作用域自己没理解
      #define LRWeak(type) __weak typeof(type) weak##type = type;
      #define LRStrong(type) __strong typeof(type) type = weak##type;
    
    LRShop * shop = [[LRShop alloc]init];
        shop.string = @"xxxxxx4444";
        LRWeak(shop)
        shop.myBlock = ^{
            LRStrong(shop)
    //        NSLog(@"%@",shop.string);
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                        NSLog(@"%@",shop.string);
            });
        };
    
    block 内部的strong 是一个局部变量(shop  PS 只是和外部对象名字一样罢了) 
    当block 执行完了就会释放持有对象
    
    

    相关文章

      网友评论

          本文标题:Block(互相持有) 内Strong强引用 释放

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