【发布时间】:2015-03-17 07:42:04
【问题描述】:
这是我学到的:使用self保留块时
- 我需要一个
weakSelf来打破保留周期 - 我需要一个
strongSelf来防止self中途变为 nil
所以我想测试一下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?
【问题讨论】:
标签: ios objective-c block retain-cycle