iphone – 升级后iOS应用程序崩溃

前端之家收集整理的这篇文章主要介绍了iphone – 升级后iOS应用程序崩溃前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > What does this mean? “’NSUnknownKeyException’,reason: … this class is not key value coding-compliant for the key X”                                    66个
如果我运行干净的构建和全新的安装,我的应用程序安装并运行得很好,但是,如果我安装以前发布的版本,然后用新版本覆盖该版本,它将在首次运行时崩溃.

重现步骤

>在iPhone 4上安装并运行我的应用程序的先前版本(1.4).
>关闭应用并杀死进程.
>结帐最新版本(2.0)
>删除构建目录
>安装并运行
>崩溃

我正在运行Xcode 3.2.5,4.2 SDK.我的iPhone 4是4.2.1.

如果你查看崩溃日志,看起来我的一个NIB中的连接不正确,但没有对象试图连接到我的AppController中的’view’属性.有时会发生相同的崩溃,除非它会说这个类不是键值活动指示符的键值编码兼容.这也很糟糕,因为grep已经证实我的项目名为activityIndi​​cator,我什么都没有.

我有三个问题:

>为什么我的应用程序崩溃了?
>有人对我能做的进一步调试有任何想法吗?我已经完成了如何解决这个问题的想法.
>有可能(可能?)当Xcode在您的设备上安装构建时,它需要从商店安装应用程序时不会采用的快捷方式.有谁知道是否是这种情况,如果是这样,你知道一种方法来模拟确切的应用程序商店安装过程,所以我可以确保我没有杀死我的所有升级程序的应用程序?

崩溃日志

  1. 2011-02-10 06:58:32.115 TheApp[132:307] *** Terminating app due to uncaught exception 'NSUnknownKeyException',reason: '[<AppController 0x14d680> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.'
  2. *** Call stack at first throw:
  3. (
  4. 0 CoreFoundation 0x33ac0987 __exceptionPreprocess + 114
  5. 1 libobjc.A.dylib 0x3347b49d objc_exception_throw + 24
  6. 2 CoreFoundation 0x33ac0705 -[NSException dealloc] + 0
  7. 3 Foundation 0x3367db4f -[NSObject(NSKeyValueCoding) setValue:forUndefinedKey:] + 182
  8. 4 Foundation 0x3367d03b _NSSetUsingKeyValueSetter + 90
  9. 5 Foundation 0x3367eda3 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 194
  10. 6 Foundation 0x33630b17 -[NSObject(NSKeyValueCoding) setValue:forKeyPath:] + 130
  11. 7 UIKit 0x3224c60f -[UIRuntimeOutletConnection connect] + 66
  12. 8 CoreFoundation 0x33a63fc7 -[NSObject(NSObject) performSelector:] + 18
  13. 9 CoreFoundation 0x33a6cd51 -[NSArray makeObjectsPerformSelector:] + 388
  14. 10 UIKit 0x3224b577 -[UINib instantiateWithOwner:options:] + 586
  15. 11 UIKit 0x3224cb39 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 92
  16. 12 UIKit 0x3209e871 -[UIApplication _loadMainNibFile] + 96
  17. 13 UIKit 0x3209a1fd -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 180
  18. 14 UIKit 0x3206648b -[UIApplication handleEvent:withNewEvent:] + 1114
  19. 15 UIKit 0x32065ec9 -[UIApplication sendEvent:] + 44
  20. 16 UIKit 0x32065907 _UIApplicationHandleEvent + 5090
  21. 17 GraphicsServices 0x33b0ef03 PurpleEventCallback + 666
  22. 18 CoreFoundation 0x33a556ff __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 26
  23. 19 CoreFoundation 0x33a556c3 __CFRunLoopDoSource1 + 166
  24. 20 CoreFoundation 0x33a47f7d __CFRunLoopRun + 520
  25. 21 CoreFoundation 0x33a47c87 CFRunLoopRunSpecific + 230
  26. 22 CoreFoundation 0x33a47b8f CFRunLoopRunInMode + 58
  27. 23 UIKit 0x32099309 -[UIApplication _run] + 380
  28. 24 UIKit 0x32096e93 UIApplicationMain + 670
  29. 25 TheApp 0x00002781 main + 88
  30. 26 TheApp 0x00002724 start + 40
  31. )

我应该补充一点,应用程序在进入我的任何代码之前崩溃,即应用程序:didFinishLaunchingWithOptions:和applicationDidFinishLaunching:永远不会被调用.

解决方法

我终于弄明白了问题所在.我的应用程序的先前版本未本地化,因此所有NIB都位于应用程序包的顶层.我的应用程序的最新版本已本地化,因此所有NIB都位于en.lproj目录中.当Xcode将应用程序部署到设备(和模拟器)时,它不会替换整个包,它只是将构建文件复制到现有包中.这导致我的NIB的两个版本,我的应用程序包顶层的过时版本和子文件夹中的当前版本.

设置应用程序时,它会拉动最顶层的NIB,这是不正确的NIB,导致崩溃.因此,我需要实际将.ipa部署到我的手机上以测试升级.

猜你在找的Xcode相关文章