好吧,我们知道我们可以有保留周期如果我们做到这一点块保持周期是否适用于块调用?
[someObject messageWithBlock:^{ [self doSomething]; }];
而且解决方法是这样的
__weak typeof(self) weakSelf = self;
[someObject messageWithBlock:^{ [weakSelf doSomething]; }];
但怎么样,如果我们做到这最后的代码,但DoSomething的有很多对自我的引用?像:
- (void) doSomething {
self.myProperty = @"abc";
[self doOtherThing];
}
这会创建一个保留周期吗?
,什么样:
__weak typeof(self) weakSelf = self;
[someObject messageWithBlock:^{
self.onError(NSLocalizedStringFromTable(@"Error", MY_TABLE, nil))
}];
凡MY_TABLE是#define
?
保留周期创建时,我们有超过2个对象的引用。超出范围时,ARC会减少保留计数。但是如果我们有一个以上的对象的强引用,那么保留周期就会发生。 (i)要删除保留周期,请在块的情况下专门针对对象进行弱引用。因为块创建一个单独的对象我喜欢这样做你做了什么:__weak typeof(self)weakSelf = self; [someObject messageWithBlock:^ {[weakSelf doSomething]; }]; (二)功能没有任何问题 – ajjjjjjjj
请让这个评论一个答案,所以我可以接受。谢谢 – SpaceDog
我觉得函数只是一种占位符代码,所以引用你的'弱自我'就不会有问题 – Tj3n