簡體   English   中英

推送viewcontroller這是一個實例變量,彈出它時不會調用dealloc方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM