0

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

我在实际运行的设备上测试了它,iOS 4.0 和 5.0.1;它工作得很好。但是在 iOS 3.0 上它会崩溃并出现异常:

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

显然,在加载主 XIB 时,这是异常的回溯:

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)

我已阅读并尝试过thisthis。因此,我将所有 nib 的部署版本设置为 3.0,并将开发版本设置为 Interface Builder 3.0,但仍然没有运气。

4

2 回答 2

0

在阅读了一些文档后,很明显 iOS 3.2 之前的版本不会从 Xcode 4.2 加载 NIB,所以我最终使用 Xcode 3.2 构建项目并将这些 NIB 复制到 DerivedData 目录下使用 Xcode 4.2 创建的包中,这很好我仍然可以使用 Xcode 4.2 调试应用程序吗,不好的是,这有点 hacky,但我别无选择。谢谢你。

于 2012-03-08T02:18:46.290 回答
0

我在上面第二次伊曼纽尔的回答。经过数周的努力,我想出了这个解决方案: 使用 Xcode 4.3.x 为 iOS 3.0 构建通用应用程序 - NSKeyedUnarchiver Exception

于 2012-04-09T15:14:50.600 回答