这是我学到的:使用self
保留块时
- 我需要一个
weakSelf
打破保留周期 - 我需要一个
strongSelf
来防止self
中途变成零
所以我想测试 a 是否strongSelf
真的可以self
像这样保持活力:
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"viewDidLoad");
self.test = @"test";
NSLog(@"%@",self.test);
__weak typeof(self)weakSelf = self;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
__strong typeof(weakSelf)strongSelf = weakSelf;
strongSelf.test = @"newTest";
NSLog(@"%@",strongSelf.test);
});
}
- (void)dealloc {
NSLog(@"dealloc");
}
@end
ViewController 将被推入一个 navigationController 并立即弹出。输出是
为什么是空的?
还有另一个问题,我有一个项目,其中包含大量weakSelf
没有的项目,strongSelf
并且我收到大量信号 11 崩溃。有关系吗?值得添加strongSelf
到它们中吗?