我在反应性可可块中使用ivar,设置弱化(自我)和强化(自我)以打破保留周期。但是当我运行代码时,它会导致内存泄漏,控制器不会调用dealloc
方法。如果我将ivar更改为属性,它会正确运行。我很困惑并且搜索了很长时间。请告诉我原因。
- (void)viewDidLoad {
[super viewDidLoad];
...
@weakify(self);
[RACObserve(self, something) subscribeNext:^(id x) {
@strongify(self);
[_button setBackgroundColor:[UIColor redColor]];
}];
}
- (void)dealloc {
}
答案 0 :(得分:2)
@strongify(self)
使用名称self声明新变量,当您调用self.button
时使用此新变量,_button
隐式使用不覆盖自我