2010-03-19 53 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