2011-03-28 46 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

相关问题