- 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();
}
网友评论