Hug*_* BR 1 memory-leaks weak-references objective-c ios
我知道你应该在块中使用weakSelf,以避免保留内存周期.喜欢:
__weak id weakSelf = self;
self.block = ^{
[weakSelf something];
}
Run Code Online (Sandbox Code Playgroud)
但我正试图找到一种通用的方法.我可以使用像:
#define Weakify(o) __weak __typeof__((__typeof__(o))o)
#define WeakifySelf(o) Weakify(self) o = self;
WeakifySelf(weakSelf)
self.block = ^{
[weakSelf something];
}
Run Code Online (Sandbox Code Playgroud)
这简化了,但我想知道为什么我不能在我的viewController上使用ivar.
@interface YDViewController : UIViewController
{
__weak id _weakSelf;
}
Run Code Online (Sandbox Code Playgroud)
然后使用这个iVar
self.block = ^{
[_weakSelf something];
}
Run Code Online (Sandbox Code Playgroud)
任何的想法?
沉沦这个想法的问题就是[_weakSelf something]在引擎盖下,完全相同[self->_weakSelf something].
因此,即使您尝试使用弱引用,最终也会使用强引用来获取弱引用并捕获它们.
| 归档时间: |
|
| 查看次数: |
216 次 |
| 最近记录: |