我面臨以下問題:我的應用程序有兩個主控制器(a)loginController和(b)contentController,當應用程序啓動時我檢查用戶是否登錄if是的,我顯示contentController,否則我顯示登錄控制器。所以基本上在didFinishLaunchingWithOptions中,我將其中一個控制器分配給了window.rootViewController。問題是,當我想切換從一個控制器到另一個(因爲用戶做出的登錄或註銷)來完成這一點,我使用以下代碼:ios:更改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:沒有像[這個答案](http://stackoverflow.com/a/5279474/120497)解釋的被調用? – djskinner