可以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
Run Code Online (Sandbox Code Playgroud)
与块不同,方法不是对象; 他们不能永久引用对象.
您的代码不会导致保留周期.显式内部doSecond引用代码的事实self并不意味着self会保留额外的时间.当你的块调用时doSecond,它self来自weakSelf内部的引用doFirst.
注意:将块存储为属性时,请使用(nonatomic, copy)而不是(nonatomic, strong).
| 归档时间: |
|
| 查看次数: |
1193 次 |
| 最近记录: |