【问题标题】:Do init* functions retain what is passed to them?init* 函数是否保留传递给它们的内容?
【发布时间】:2011-01-29 16:06:16
【问题描述】:

我使用以下命令初始化导航控制器:

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

我想知道导航控制器是否保留了 firstViewController 或者我需要让它保持活动状态。当我释放 firstViewController 时,导航控制器仍然有效。这似乎是错误的。

澄清?

【问题讨论】:

    标签: iphone objective-c memory-management retain


    【解决方案1】:

    如果它需要保留它,它将retain 它。所以是的,如果不再需要它,你可以安全地释放它。不仅仅是initWhatever 方法有这种行为——它是整个内存管理模型的标准操作。

    【讨论】:

    • 对除代表以外的所有内容都是正确的。如果一个 init 接受一个委托,它将不会保留它。这符合任何人都不应保留代表的原则。
    • 谢谢,很清楚。 firstViewController 明确地通过 initWithRootViewController 传递给 UINavigationController,所以 I 不再需要它了。 UINavigationController 可以,但这是它的责任。感谢您加强这一点。做得不够。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多