弱引用难题
Weak references conundrum
假设我想创建一个弱引用,这样它就不会被块保留。所以我有一个 属性:
@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 的引用很弱?我怀疑不是,但我需要确认一下。
是的,在最后一个例子中使用 selfWeak
足以打破强引用循环。不用担心您在那里引用了它的属性。
假设我想创建一个弱引用,这样它就不会被块保留。所以我有一个 属性:
@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 的引用很弱?我怀疑不是,但我需要确认一下。
是的,在最后一个例子中使用 selfWeak
足以打破强引用循环。不用担心您在那里引用了它的属性。