Can doFirst
在这里引起保留周期?
@interface Example : NSObject
@property (nonatomic, strong) void (^block)();
@end
@implementation Example
- (void)doFirst
{
__weak id weakSelf = self;
self.block = ^ {
[weakSelf doSecond];
};
self.block();
}
- (void)doSecond
{
self.value = //...
// do other stuff involving self
}
@end
与块不同,方法不是对象;而是对象。它们不能保存对对象的永久引用。
您的代码不会导致保留周期。事实上里面的代码doSecond
参考self
明确并不意味着self
会被保留额外的时间。当你的区块调用时doSecond
, its self
来自weakSelf
里面参考doFirst
.
注意:当您将块存储为属性时,use (nonatomic, copy)代替(nonatomic, strong)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)