當我的應用第一次加載時,我將我的UIWindow
的rootViewController
屬性設置爲controllerA
。更改UIWindow的rootViewController
有時在我的應用程序中,我選擇將rootViewController
更改爲controllerB
。
問題是,有時當我在controllerB
做翻轉過渡時,我看到controllerA
的背後。出於某種原因,該觀點未被刪除。更令人擔憂的是,在將rootViewController
設置爲controllerB
,controllerA
的dealloc
方法之後永遠不會被解僱。
我試圖刪除的UIWindow
子視圖切換到controllerB
之前手動,也解決了看小號的dealloc仍然不會被調用controllerA
「的背景,但controllerA
的看法」的問題。 這是怎麼回事?
蘋果文檔說:
根視圖控制器提供窗口的內容圖。將視圖控制器分配給此屬性(以編程方式或使用Interface Builder)將視圖控制器的視圖作爲窗口的內容視圖進行安裝。如果該窗口具有現有的視圖層次結構,則在安裝新視圖之前將刪除舊視圖。
UPDATE
這裏是我的AppDelegate的代碼:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self showControllerA];
[self.window makeKeyAndVisible];
return YES;
}
- (void)showControllerA
{
ControllerA* a = [ControllerA new];
self.window.rootViewController = a;
}
- (void) showControllerB {
ControllerB* b = [ControllerB new];
self.window.rootViewController = b;
}
您可以在應用程序委託中爲您的'application:didFinishLaunchingWithOptions:'方法提供代碼嗎? – Cezar
愚蠢的問題,但是當你推第二個控制器時,你把'controllerA'設置爲零嗎?如果沒有,那麼它不會釋放。 (我假設你是) – Putz1103
我從來沒有保持一個指向controllerA的指針,所以不知道我會設置爲零。 – aloo