2010-03-19 19 views
2

我初始化一個導航控制器:做init *函數保留傳遞給他們的東西嗎?

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:firstViewController]; 

或不知導航控制器保留firstViewController,我需要保持它活着。當我釋放firstViewController時,導航控制器仍然有效。這似乎是錯誤的。

說明?

回答

3

如果需要保留它,它會retain它。所以是的,如果不再需要它,你會安全地釋放它。這不僅僅是具有這種行爲的initWhatever方法 - 它是整個內存管理模型的標準操作。

+2

適用於除代表的所有內容。如果一個init接受一個委託,它將不會保留它。這與沒有人應該保留代表一致。 – 2010-03-19 22:34:09

+0

謝謝,很明顯。 firstViewController明確地通過initWithRootViewController傳遞給UINavigationController,所以* I *不再需要它了。 UINavigationController的確如此,但這是它的責任。 感謝您的加強。不能做得夠多。 – Thaurin 2010-03-19 22:39:49

相關問題