这是我学到的:使用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到它们中吗?