我的iOS應用程序以登錄提示打開。一旦用戶登錄,它將切換到主視圖。成功登錄後重新分配RootViewController
在應用中:didFinishLaunchingWithOptions,我的RootViewController的設置爲LoginViewController。該LoginViewController有AppDelegate中作爲其代表:
LoginViewController *login = [[LoginViewController alloc] init];
[login setDelegate:self];
[[self window] setRootViewController:login];
如果登錄成功,LoginViewController調用AppDelegate中的userDidLogin方法:
if([[self delegate] respondsToSelector:@selector(userDidLogin)]) {
[[self delegate] userDidLogin];
}
userDidLogin創建一個新的UINavigationController並將其分配爲RootViewController的:
- (void)userDidLogin
{
MainRecordViewController *mainRecordViewController = [[MainRecordViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:mainRecordViewController];
[[self window] setRootViewController:navController];
}
通過向LoginViewController的dealloc方法添加一個NSLog,看起來LoginViewControl ler在該階段銷燬並且執行按預期繼續進行。
我沒有做任何事情明確關閉LoginViewController,只是依靠假設分配一個新的RootViewController將意味着舊的消失,並由ARC整理。
我可以依靠總是既然如此?這是一個明智的做法嗎?
在此先感謝。
詹姆斯
邊注:如果您不確定什麼,什麼不得到由ARC發佈可以實現dealloc方法和打印類似的NSLog(@「MySuperDuperClass的實例是通過ARC釋放」)。 – Groot 2013-05-02 09:05:59
謝謝 - 我已經完成了。這就是我所說的「通過將NSLog添加到dealloc方法...」。視圖似乎正確關閉,看起來它總是被釋放 - 但我想知道我是否可以依靠它始終工作。我懷疑這很好,但感覺就像是一個可能出錯的假設...... – James 2013-05-02 09:08:26