在block中用_var对成员变量赋值,一样会造成retain cycle,必需使用weakSelf.var = xxx 才不会造成内存泄漏 具体如图
_chartView.block = ^(NSInteger index){
// _seletedButtonIndex = index;
weakSelf.seletedButtonIndex = index;
[weakSelf configureGridView];
[weakSelf requestIncomeData];
};
在我最初的理解中,_seletedButtonIndex是不会调用[self seletedButtonIndex]这个getter的,所以不应该会造成对self的强引用,直到项目中内存泄漏,最终定位到这句代码的时候,整个人是懵逼的。
这句代码到底强引用了self没,我得调查调查。
//更新 用clang把代码转换成c++后发现

虽然使用的是_var的形式访问成员变量,但是最后还是通过self + ivar来获取成员变量,因此也会造成强引用。