在ReactiveCocoa有宏来防止保留循环 @weakify
和 @strongify。根据我的理解,@weakify
会像我通常做的那样创建 __weak
引用以在 block 中使用,但是 @strongify
呢?
为什么我需要在区 block 中再次使其变强?
这是一些示例用法:
@weakify(self);
[RACObserve(self, username) subscribeNext:^(NSString *username) {
@strongify(self);
[self validateUsername];
}];
最佳答案
如果您只是在 block 中使用弱引用,则 self 可以在执行 block 时被释放。但是如果你想确保 self 保留在内存中直到 block 完成执行,你必须将弱引用转换回强引用。
关于ios - @strongify 的原因是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28809163/