gpt4 book ai didi

objective-c - 释放主视图 Controller (iOS)

转载 作者:行者123 更新时间:2023-11-28 22:56:23 25 4
gpt4 key购买 nike

我在 Apple 的网站上搜索过这个,但似乎只能找到使用 Storyboards 或 Navigation Controllers 的文档,这两种我都没有使用。这是一个关于内存管理的非常简单的问题。

我创建了一个完全空白的应用程序。在我的 AppDelegate 的 didFinishLaunchingWithOptions 函数中,我创建了一个我构建的 View Controller 的实例。我的设计(这本身可能是个问题)是在 View Controller 和 View 之间建立 1:1 的关系。

所以我的应用程序的主菜单,它是一切的启动板,在 MenuViewController.h/m 中。

在 .h 中:

MenuViewController *m;

在 .m 中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];

m = (MenuViewController *)[[MenuViewController alloc] init];
m.window = self.window;
[m doStuff]; // handful of functions, not actually called this
//[m release]; // doesn't make sense to me
return YES;
}

这就是我感到困惑的地方。我希望它基本上存在于整个应用程序生命周期。但我也觉得你应该(在当前功能的范围内)释放你分配的任何东西。如果您还需要它,则应先将其保留在其他地方。这不是真的吗?

我的基本问题是……我应该在哪里发布这个 View Controller?还有什么我说的似乎不对劲吗?

最佳答案

初始化错误。您没有将窗口分配给 Controller ,而是将 Controller 分配给窗口:

    // window creation code here
...
m = [[MenuViewController alloc] init];
[window setRootViewController:m]; // window does retain for m
[m release]; // so we release it here
[self.window makeKeyAndVisible];
return YES
}

关于objective-c - 释放主视图 Controller (iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10709514/

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