在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來獲取成員變數,因此也會造成強引用。