2016-09-01 27 views
1

我在易反应的可可块中使用了一个伊维尔,设置弱化(自我)和强化(自我)来打破保留周期。但是当我运行代码时,它会导致内存泄漏,控制器不会调用dealloc方法。如果我将伊娃改为财产,它就会正确运行。我对此很困惑,并且寻找很长时间。请告诉我为什么。为什么使用伊伐利可能导致反应可可的保留周期?

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

- (void)dealloc { 

} 

回答

2

@strongify(self)声明新的变量名称为自己,当你调用self.button您使用这个新的变量,_button隐含的使用不重写自

+0

'@weakify(个体经营)'声明薄弱自我,'@强化(自我)'宣布一个强大的自我。 'self.button'意味着使用强的,但'_button'不使用它。拯救我的一天。 – Monqi

相关问题