StrongSelf

  • weakSelf : 防止循环引用
  • strongSelf: 防止释放 需要 强引用weakSelf,主要是处理一些比较费时的操作

例子:.testBlock 是全局的block

- (void)dealloc {
    
    NSLog(@"VC_dealloc");
}

- (void)test {
    
    /* 运行 在 block 里面的 延时操作 **/
    __weak typeof(self)weakSelf = self;
    
#if 1 // 当控制器 快速点返回后 不会马上调用delloc ,会先调用延时里面的方法,而且self 没有被释放
    self.testBlock = ^(){
        
        __strong typeof(weakSelf) strongSelf = weakSelf;
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            
            NSLog(@"strongSelf = %@",strongSelf);
        });
    };
#else // self 会被马上释放 
    self.testBlock = ^(){
        
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            
            NSLog(@"weakSelf = %@",weakSelf);
        });
    };
#endif
    
    self.testBlock();
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容