假设我想创建一个弱引用,因此它不会被块保留。所以我有一个属性:
@property (nonatomic, strong) MyClass *myObject;
我这样做:
__weak typeof(self.myObject) myObjectWeak = self.myObject;
void (^doSomething)() = ^void() {
[myObjectWeak doSomething];
};
但是这个:
__weak typeof(self) selfWeak = self;
void (^doSomething)() = ^void() {
[selfWeak.myObject doSomething];
};
这会产生同样的效果吗?我的意思是在块内部对myObject有一个弱引用?我怀疑它不是,但我只需要确认。
答案 0 :(得分:1)
是的,在最后一个示例中使用selfWeak
足以打破强参考周期。不要担心你在那里引用它的属性。