[英]pushed ViewController won't dealloc. which strong reference holds it?
[英]Push viewcontroller which is an instance variable, dealloc method won't be called when pop it
我有一個AViewController,如果我創建BViewController作為這樣的實例變量
@interface AViewController ()
{
BViewController *bVC;
}
@end
然后推
- (void)push {
bVC = [[BViewController alloc] init];
[self.navigationController pushViewController:bVC animated:YES];
}
彈出BViewController時不會調用Dealloc方法。
兩個視圖控制器幾乎都是空的,我的意思是沒有NSTimers,塊或網絡請求。 我想AViewController中存在一個強引用循環,但無法弄清楚循環。
所以,有人可以幫我解決這個問題,謝謝!
這是基本的存儲器管理101。
只有在沒有對該對象的強引用之后才會釋放對象。
您的ivar bVC
強烈引用了視圖控制器。 推動它增加另一個。 然后你彈出它,它回到bVC
的一個強引用。 所以它沒有被解除分配。
您可以避開ivar或在某些時候將其設置為nil
,以便可以取消分配視圖控制器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.