2011-03-28 30 views
3

已經有幾個類似的問題,但它與我的情況不完全相同。剛開始一個新的視圖以項目爲基礎,添加viewDidLoadawakeFromNib用的NSLog語句,然後執行以下變化MainWindow.xib爲什麼viewDidLoad在設置UIWindow的rootViewController屬性時調用兩次?

  • 刪除的應用程序委託視圖控制器連接。
  • UIWindow’srootViewController委託給App View Controller實例。

第一次調用堆棧跟蹤:

#0  0x000025c0 in -[foozaViewController viewDidLoad] at /Users/rafael/Downloads/fooza/fooza/foozaViewController.m:38 
#1  0x000cd089 in -[UIViewController view]() 
#2  0x00040d42 in -[UIWindow addRootViewControllerViewIfPossible]() 
#3  0x0079d5e5 in -[NSObject(NSKeyValueCoding) setValue:forKey:]() 
#4  0x00050ff6 in -[UIView(CALayerDelegate) setValue:forKey:]() 
#5  0x0021930c in -[UIRuntimeOutletConnection connect]() 
#6  0x00d418cf in -[NSArray makeObjectsPerformSelector:]() 
#7  0x00217d23 in -[UINib instantiateWithOwner:options:]() 
#8  0x00219ab7 in -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:]() 
#9  0x0001f17a in -[UIApplication _loadMainNibFile]() 
#10  0x0001fcf4 in -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:]() 
#11  0x0002a617 in -[UIApplication handleEvent:withNewEvent:]() 
#12  0x00022abf in -[UIApplication sendEvent:]() 
#13  0x00027f2e in _UIApplicationHandleEvent() 
#14  0x01004992 in PurpleEventCallback() 
#15  0x00dac944 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__() 
#16  0x00d0ccf7 in __CFRunLoopDoSource1() 
#17  0x00d09f83 in __CFRunLoopRun() 
#18  0x00d09840 in CFRunLoopRunSpecific() 
#19  0x00d09761 in CFRunLoopRunInMode() 
#20  0x0001f7d2 in -[UIApplication _run]() 
#21  0x0002bc93 in UIApplicationMain() 
#22  0x000020d9 in main() 

下面是從第二個呼叫跟蹤:

#0  0x000025c0 in -[foozaViewController viewDidLoad] at /Users/rafael/Downloads/fooza/fooza/foozaViewController.m:38 
#1  0x00002555 in -[foozaViewController awakeFromNib]() 
#2  0x00217f26 in -[UINib instantiateWithOwner:options:]() 
#3  0x00219ab7 in -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:]() 
#4  0x0001f17a in -[UIApplication _loadMainNibFile]() 
#5  0x0001fcf4 in -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:]() 
#6  0x0002a617 in -[UIApplication handleEvent:withNewEvent:]() 
#7  0x00022abf in -[UIApplication sendEvent:]() 
#8  0x00027f2e in _UIApplicationHandleEvent() 
#9  0x01004992 in PurpleEventCallback() 
#10  0x00dac944 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__() 
#11  0x00d0ccf7 in __CFRunLoopDoSource1() 
#12  0x00d09f83 in __CFRunLoopRun() 
#13  0x00d09840 in CFRunLoopRunSpecific() 
#14  0x00d09761 in CFRunLoopRunInMode() 
#15  0x0001f7d2 in -[UIApplication _run]() 
#16  0x0002bc93 in UIApplicationMain() 
#17  0x000020d9 in main() 

這是期望的行爲或錯誤?如果我們還是用在 應用程序委託的出口連接到根視圖控制器保持清醒viewDidLoad/viewDidUnload比更傳統的 方式 還是應該忽略蘋果的規則,不叫超在awakeFromNib並使用新的rootViewControllerUIWindow的財產?

+0

不知道答案,對不起。但這正是我不使用筆尖的原因之一。 – bioffe 2011-03-29 00:50:09

回答

2

它看起來像一個錯誤,因爲它只能在Xcode 4中重現。我將提交一個錯誤。

參見http://shurl.at/5u(蘋果開發者論壇)

+0

我剛剛在蘋果的Bug Reporter中提交了一個bug,你可以在rdar:// 9234809 – 2011-04-05 11:05:50

+0

找到我的bug是作爲已知問題提交的,並且是rdar:// 9110312的副本 – 2011-04-11 17:30:57

相關問題