ios - @strongify 的原因是什么

标签 ios reactive-cocoa retain-cycle

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/

相关文章:

ios - 指向作为参数传入的协议(protocol)的指针

objective-c - 如何将 RACSignal 重新绑定(bind)到 BOOL 变量?

ios - Realm 列表 KVO 观察

ios - 我是否需要 block 中的 strongSelf 来保持 self 存活并且 strongSelf 真的有效吗?

ios - 使用协调器模式时奇怪的保留周期

ios - 设备内存不足时是否可以防止应用程序终止?

ios - 64 位支持使用 vs-mda-remote 构建 Ipa

ios - 使一键更改标签文本以在模式之间切换

cocoa - ReactiveCocoa 的引用所有权语义是什么?

ios - 我们需要在 ARC 的 UIAnimationBlocks 中使用 __weak self 吗?