iOS block self 循环引用 weakSelf str

2017-01-10  本文已影响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是如何装逼的

上一篇下一篇

猜你喜欢

热点阅读