iOS5和XCode4错误 - 由于未捕获的异常'NSUnknownKeyException'而终止应用程序

时间:2011-11-13 14:38:02

标签: ios5 ios4

我最近更新了Xcode以使用iOS5 SDK。由于更新我的应用程序在启动屏幕崩溃。之前该应用程序在4.3和iPhone(iOS5之前)上运行。 该错误指向:int retVal = UIApplicationMain(argc, argv, nil, nil); 在main.m

控制台返回以下内容:

GNU gdb 6.3.50-20050815 (Apple version gdb-1708) (Mon Aug  8 20:32:45 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".Attaching to process 3903.
2011-11-13 22:11:05.421 BlastCalc[3903:10d03] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIApplication 0x5c1b600> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key averageChargeLengthLabel.'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00e7b5a9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x00fcf313 objc_exception_throw + 44
    2   CoreFoundation                      0x00e7b4e1 -[NSException raise] + 17
    3   Foundation                          0x0084d677 _NSSetUsingKeyValueSetter + 135
    4   Foundation                          0x0084d5e5 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 285
    5   UIKit                               0x002c930c -[UIRuntimeOutletConnection connect] + 112
    6   CoreFoundation                      0x00df18cf -[NSArray makeObjectsPerformSelector:] + 239
    7   UIKit                               0x002c7d23 -[UINib instantiateWithOwner:options:] + 1041
    8   UIKit                               0x002c9ab7 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 168
    9   UIKit                               0x000cf17a -[UIApplication _loadMainNibFile] + 172
    10  UIKit                               0x000cfcf4 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 291
    11  UIKit                               0x000da617 -[UIApplication handleEvent:withNewEvent:] + 1533
    12  UIKit                               0x000d2abf -[UIApplication sendEvent:] + 71
    13  UIKit                               0x000d7f2e _UIApplicationHandleEvent + 7576
    14  GraphicsServices                    0x0132f992 PurpleEventCallback + 1550
    15  CoreFoundation                      0x00e5c944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
    16  CoreFoundation                      0x00dbccf7 __CFRunLoopDoSource1 + 215
    17  CoreFoundation                      0x00db9f83 __CFRunLoopRun + 979
    18  CoreFoundation                      0x00db9840 CFRunLoopRunSpecific + 208
    19  CoreFoundation                      0x00db9761 CFRunLoopRunInMode + 97
    20  UIKit                               0x000cf7d2 -[UIApplication _run] + 623
    21  UIKit                               0x000dbc93 UIApplicationMain + 1160
    22  BlastCalc                           0x00002979 main + 121
    23  BlastCalc                           0x000028f5 start + 53
    24  ???                                 0x00000001 0x0 + 1
)
terminate called throwing an exceptionsharedlibrary apply-load-rules all
(gdb)

我在旧的Xcode版本和SDK中已经阅读了很多与此相关的修复,但是,我无法找到解决我的问题的方法。我对iOS的熟练程度不高,而且对5的改变让我感到高兴。

如果有人能指出我的答案方向,我将不胜感激。提前谢谢大家。

目前我正在将我的应用程序宰杀死亡,几乎已经决定可以从头开始重新编制。我曾经尝试过一次,但是整个故事板的事情让人很困难。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的错误,我通过重新创建以前的连接来修复它。它的背景是:我创建了一个(iphone)单视图应用程序并添加了一个可以查看控制器的地图视图。我只是运行应用程序我有一些错误。尝试修复它,我将地图视图拖动到视图控制器以创建出口。同时这没有解决我删除出口和所有代码创建。绕过那个错误后,我得到了这个。据我所知,通过重新创建地图视图出口来修复它。

现在,这不是一个很好的运作方式。看起来它保留了一些缓存。我很高兴知道如何重置/清理这种情况。

希望它有所帮助。谢谢!

答案 1 :(得分:0)

我刚刚遇到同样的问题。我终于做到了这一点:

  1. 对于averageChargeLength标签,请使用Xcode界面构建器 (通过选择故事板或xib)并打开 连接面板。使用故事板,您只需按住Control键即可 在它上面打开连接面板。
  2. 删除所有插座 通过鼠标悬停在连接上并单击该连接 微小x
  3. 尝试在模拟器中再次运行您的应用。对我来说,那 允许我的应用程序运行,没有例外,但标签没有 再次更新。
  4. 如果有效,请返回Xcode界面构建器 尝试通过拖动来重新创建您想要创建的连接 连接回ViewController.h文件。一定要检查 来自连接的重复代码的等效.m文件 插入并删除它。
  5. 尝试再次运行您的应用。对我来说,相反 它像以前一样失败了,它确实跑了。
  6. 之前我失败的原因是我试图将按钮连接到错误的东西。我删除了它所连接的东西,但从未检查过界面构建​​器以确保连接也已消失。