加载主XIB使iOS 3.0上的应用程序崩溃

感谢您抽出一些时间来阅读我的问题。 我有这个应用程序(在Cydia),其中约有10%的用户与iOS 3.0,所以我想在我的下一个更新中支持他们。

我使用运行iOS 4.0和5.0.1的实际设备对其进行了testing; 它工作正常。 但是,在iOS 3.0上,它崩溃了一个例外:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: ' -[NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive (0x4e, 0x49, 0x42, 0x41, 0x72, 0x63, 0x68, 0x69) 

显然在加载主要的XIB时,这里是exception的回溯:

 0 0x30016588 in objc_exception_throw () 1 0x30224026 in +[NSException raise:format:arguments:] () 2 0x30223fc6 in +[NSException raise:format:] () 3 0x305564b4 in -[NSKeyedUnarchiver initForReadingWithData:] () 4 0x3094927c in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:] () 5 0x30949090 in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:] () 6 0x308f131c in -[UIApplication _loadMainNibFile] () 7 0x308f0f9c in -[UIApplication _runWithURL:sourceBundleID:] () 8 0x309374b0 in -[UIApplication handleEvent:withNewEvent:] () 9 0x30936cf0 in -[UIApplication sendEvent:] () 10 0x3093687c in _UIApplicationHandleEvent () 11 0x3204696c in PurpleEventCallback () 12 0x30254a76 in CFRunLoopRunSpecific () 13 0x3025416a in CFRunLoopRunInMode () 14 0x308f0354 in -[UIApplication _run] () 15 0x308eea94 in UIApplicationMain () 16 0x00003886 in main (argc=1, argv=0x2ffff74c) 

我已经阅读并尝试了这 一点 。 所以我把我所有的部署版本设置为3.0,并开发到Interface Builder 3.0,仍然没有运气。

在阅读了一些文档之后,很明显,iOS 3.2之前的版本不会加载Xcode 4.2中的NIB,所以我最终用Xcode 3.2创build了项目,并将这些NIB复制到了DerivedData目录下的Xcode 4.2创build的包中,是我仍然可以用Xcode 4.2debugging应用程序,不好的部分是,这是有点hacky,但我没有select。 谢谢。

我的第二个伊曼纽尔的答案在上面。 经过几个星期拉我的头发,我想出了这个解决scheme: 使用Xcode 4.3.x构buildiOS 3.0的通用应用程序 – NSKeyedUnarchiver Exception