美文网首页
iOS block self 循环引用 weakSelf str

iOS block self 循环引用 weakSelf str

作者: 高产的白猫 | 来源:发表于2017-01-10 11:57 被阅读0次

    block中使用self导致循环引用

    这个问题相比大家都了解,并且也知道如何通过weakSelf strongSelf来解决循环引用。
    接下来说一下我遇到的问题,前两天修改代码,有很多地方改成使用block,这就悲剧了。
    有许多代码要拷贝到block中执行,里面有很多self,而且不止一处。
    这难道要我一个一个的使用weakSelf strongSelf来替换一遍吗.
    经过这两天的查找资料,发现了一个很靠谱的解决办法

    @weakify @strongify登场

    - (id)init {
        
        self = [super init];
        
        if (self) {
            
            NSLog(@"self-class >>> %@",NSStringFromClass([self class]));
            NSLog(@"super-class >>> %@",NSStringFromClass([super class]));
            
            @weakify(self);
            
            self.block = ^{
              
                @strongify(self);
                
                dispatch_async(dispatch_get_global_queue(0, 0), ^{
                   
                    [self test];
                });
                
            };
            
        }
        
        return self;
        
    }
    

    参考:Reactive Cocoa中的@weakify、@strongify是如何装逼的

    相关文章

      网友评论

          本文标题:iOS block self 循环引用 weakSelf str

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