gpt4 book ai didi

ios : change window. rootViewController 和内存管理

转载 作者:行者123 更新时间:2023-11-29 04:21:41 26 4
gpt4 key购买 nike

我面临以下问题:我的应用程序有两个主 Controller (a)loginController和(b)contentController,当应用程序启动时,我检查用户是否登录,如果是,我显示contentController,否则我显示登录 Controller 。所以基本上在 didFinishLaunchingWithOptions 中,我将此 Controller 之一分配给 window.rootViewController。问题是,当我想从一个 Controller 切换到另一个 Controller (因为用户进行了登录或注销)来完成此操作时,我使用以下代码:

[UIView transitionWithView:self.window
duration:0.65
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
self.window.rootViewController = self.contentController;
}
completion:^(BOOL finished){
[self.loginController release];
}];

在此转换之前 window.rootViewController 是 loginController,这里的问题是,当执行此代码时,我收到以下错误:

-[loginController _preferredInterfaceOrientationGivenCurrentOrientation:]: message sent to deallocated instance 0x1c55b490

我想了解如何在不出现此错误的情况下释放我的 Controller 。如果有人可以建议我在运行时更改 window.rootViewController 的最佳方法是什么,那就太好了。

最佳答案

如果没有看到更多代码,就不可能确定为什么会出现内存管理问题。但我想提供不同的答案。始终使您的内容 Controller 成为窗口的根 Controller 。如果您需要显示登录屏幕,请将其呈现为内容 Controller 上的模态视图 Controller 。这比切换 Root View Controller 要容易得多。您可以在启动时不显示动画,这样用户就永远不会看到它的转换。登录后,您可以通过多种方式来显示其下方的内容 Controller 。如果用户注销,您可以再次呈现登录 Controller ,作为内容 Controller 上的模式 Controller 。

关于ios : change window. rootViewController 和内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12916948/

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