gpt4 book ai didi

iphone - 保留 rootViewController?

转载 作者:搜寻专家 更新时间:2023-10-30 20:01:45 31 4
gpt4 key购买 nike

我想知道是否有人可以帮助我解决下面代码中的内存管理问题。我对 rootController 特别感兴趣,它是在我执行 initWithRootViewController 时被保留还是在窗口 addSubView 中保留它(这是我的猜测):我只是好奇发生了什么......

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

Base_TableViewController *rootController = [[Base_TableViewController alloc] init];
navController = [[UINavigationController alloc] initWithRootViewController:rootController];
[window addSubview:[navController view]];
[window makeKeyAndVisible];

[rootController release];
return YES;
}

- (void)dealloc {
[navController release];
[window release];
[super dealloc];
}

编辑:

所以基本上上面的代码是正确的,底部的释放取消了顶部的分配,“rootController”被navController保留了?

非常感谢,非常感谢。

加里

最佳答案

调用 alloc init 后,rootController 上的保留计数将为 1。如果 navController 在它的 initWithRootViewController 消息中保留,那么在该行之后,它将有两个保留计数(我很确定 UINavigationController 将保留它的 Root View Controller )。

将 navController 的 View 添加到窗口不会影响 rootController 的保留计数(它会增加 navController 的 UIView 成员的保留计数)。

在 rootController 释放后,它会将保留计数减为一。

编辑

是的。事实上,您可以通过删除底部的 release 并在初始分配周围添加一个 autorelease 来进一步简化代码。

关于iphone - 保留 rootViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3565409/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com