【问题标题】:Why using an ivar can cause a retain cycle in reactive cocoa?为什么使用 ivar 会导致反应性可可中的保留循环?
【发布时间】:2016-09-01 09:40:45
【问题描述】:

我在反应性可可块中使用 ivar,设置weakify(self) 和strongify(self) 以打破保留循环。但是当我运行代码时,它会导致内存泄漏,控制器不会调用dealloc 方法。如果我将 ivar 更改为属性,它运行正确。我对此感到很困惑,并搜索了很长时间。请告诉我为什么。

- (void)viewDidLoad {
     [super viewDidLoad];
     ...
     @weakify(self);
     [RACObserve(self, something) subscribeNext:^(id x) {
         @strongify(self);
         [_button setBackgroundColor:[UIColor redColor]];
     }];
}

- (void)dealloc {

}

【问题讨论】:

    标签: ios objective-c memory-leaks reactive-cocoa retain-cycle


    【解决方案1】:

    @strongify(self) 声明名为 self 的新变量,当您调用 self.button 时使用此新变量,_button 隐式使用不要覆盖 self

    【讨论】:

    • @weakify(self) 声明弱自我,@strongify(self) 声明强自我。 self.button 表示使用强的,但_button 不使用。拯救我的一天。
    猜你喜欢
    • 2021-03-11
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 2016-03-06
    • 2013-04-30
    • 2015-11-09
    相关资源
    最近更新 更多