弱参考难题

时间:2016-07-09 21:12:00

标签: ios iphone objective-c-blocks

假设我想创建一个弱引用,因此它不会被块保留。所以我有一个属性:

@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有一个弱引用?我怀疑它不是,但我只需要确认。

1 个答案:

答案 0 :(得分:1)

是的,在最后一个示例中使用selfWeak足以打破强参考周期。不要担心你在那里引用它的属性。