【发布时间】:2012-10-16 14:27:19
【问题描述】:
我面临以下问题:我的应用程序有两个主控制器 (a)loginController 和 (b) contentController,当应用程序启动时,我检查用户是否已登录,如果是,则显示 contentController,否则显示登录控制器。所以基本上在 didFinishLaunchingWithOptions 中,我将此控制器之一分配给 window.rootViewController。问题是当我想从一个控制器切换到另一个控制器时(因为用户进行了登录或注销)来完成此操作,我使用以下代码:
[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
我想了解如何在不出现此错误的情况下释放我的控制器。 如果有人能建议我在运行时更改 window.rootViewController 的最佳方法是什么,那就太好了。
【问题讨论】:
-
可能是因为 viewWillDisappear: 和 viewDidDissappear: 没有像this answer 中解释的那样被调用吗?
标签: ios memory-management uiviewcontroller uiviewanimationtransition appdelegate