为什么使用ivar会导致反应可可的保留周期?

时间:2016-09-01 09:40:45

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

我在反应性可可块中使用ivar,设置弱化(自我)和强化(自我)以打破保留周期。但是当我运行代码时,它会导致内存泄漏,控制器不会调用dealloc方法。如果我将ivar更改为属性,它会正确运行。我很困惑并且搜索了很长时间。请告诉我原因。

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

- (void)dealloc {

}

1 个答案:

答案 0 :(得分:2)

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