我正在重新創建某種特定於我的應用的UIAlertView
,所以我將UIWindow
作爲子類來執行此操作。該窗口被添加到[UIApplication sharedApplication].windows
,但從未實際顯示。我修剪下來到這個小小的一段代碼:UIWindow的makeKeyAndVisible與ARC玩不好
UIWindow *testWindow = [[UIWindow alloc] initWithFrame:self.view.bounds];
testWindow.backgroundColor = [UIColor blueColor];
[testWindow makeKeyAndVisible];
當我登錄[UIApplication sharedApplication].windows
,我看到:
"<UIWindow: 0x83774f0; frame = (0 0; 320 480); opaque = NO; autoresize = RM+BM; layer = <UIWindowLayer: 0x8377660>>",
"<UIWindow: 0x8382630; frame = (0 0; 300 400); layer = <UIWindowLayer: 0xf573e60>>"
然而具有藍色背景的顏色,第二個窗口是nowehere待觀察。
UPDATE:這隻有在啓用ARC時纔會出現問題。我創建了2個新的「單視圖」項目,一個啓用ARC,另一個禁用ARC。兩者都是相同的,我將UIWindow代碼添加到主視圖控制器的viewDidAppear:
。當我在模擬器中運行應用程序時,藍色窗口僅顯示在ARC禁用的項目中。看起來ARC很快就擺脫了我的UIWindow,所以它甚至沒有時間顯示出來。製作它__strong
沒有幫助。仍然一無所知......
這回答了很多問題,謝謝! – samvermette 2011-12-29 02:43:39
正如你所推薦的,我最終將它變成了一個UIView子類,它又創建了自己的UIWindow。爲了讓這個窗戶成爲一個強大的屬性,我放心,當我將它設置爲零時,窗口會被保留,顯示和刪除。感謝你,ARC更有意義! – samvermette 2011-12-29 03:08:43