iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iphone – 为什么在设置UIWindow的rootViewController属性时viewDidLoad调用了两次?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
已经有几个类似的问题,但它与我的情况并不完全相同.只需启动一个新的基于视图的项目,使用NSLog语句添加viewDidLoad和awakeFromNib,并在MainWindow.xib中进行以下更改:

>删除应用程序委托中的视图控制器连接.
>将UIWindow的rootViewController委托连接到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比率
或者我们应该忽略Apple的规则,不要在awakeFromNib中调用super并使用UIWindow的新的rootViewController属性

解决方法

它看起来像一个bug,因为它只能在Xcode 4中重现.我会提交一个bug.

另请参阅http://shurl.at/5u(Apple Developer论坛)

大佬总结

以上是大佬教程为你收集整理的iphone – 为什么在设置UIWindow的rootViewController属性时viewDidLoad调用了两次?全部内容,希望文章能够帮你解决iphone – 为什么在设置UIWindow的rootViewController属性时viewDidLoad调用了两次?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: