iOS 和解档 xib 文件

发布于 2024-12-27 08:08:05 字数 2249 浏览 1 评论 0原文

我正在完成一个适用于 iOS 3.0 及更高版本的应用程序,可以在 iPhone 和 iPod Touch 上运行。它在 iOS4.0 及更高版本上运行良好,但是当我在运行 iOS 3.0 的第二代 iPod Touch 上对其进行回测时,启动图像显示,我遇到了以下

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive (0x4e, 0x49, 0x42, 0x41, 0x72, 0x63, 0x68, 0x69)'
2012-01-15 09:35:53.025 MyApp[3026:207] Stack: (
    808001701,
    805397928,
    807551015,
    807550919,
    810902709,
    815043196,
    815042704,
    814682908,
    814682012,
    814970032,
    814968048,
    814966908,
    839149932,
    807750263,
    807747947,
    814678868,
    814672532,
    61527,
    10764
)
terminate called after throwing an instance of 'NSException'
(gdb) backtrace
#0  0x31dd594c in __kill ()
#1  0x31dd5940 in kill ()
#2  0x31dd5934 in raise ()
#3  0x31deccfe in abort ()
#4  0x374ef848 in __gnu_cxx::__verbose_terminate_handler ()
#5  0x300166c0 in _objc_terminate ()
#6  0x374ecf3c in __cxxabiv1::__terminate ()
#7  0x374ecfb4 in std::terminate ()
#8  0x374ed0dc in __cxa_throw ()
#9  0x300165e4 in objc_exception_throw ()
#10 0x30224026 in +[NSException raise:format:arguments:] ()
#11 0x30223fc6 in +[NSException raise:format:] ()
#12 0x305564b4 in -[NSKeyedUnarchiver initForReadingWithData:] ()
#13 0x3094927c in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:] ()
#14 0x30949090 in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:] ()
#15 0x308f131c in -[UIApplication _loadMainNibFile] ()
#16 0x308f0f9c in -[UIApplication _runWithURL:sourceBundleID:] ()
#17 0x309374b0 in -[UIApplication handleEvent:withNewEvent:] ()
#18 0x30936cf0 in -[UIApplication sendEvent:] ()
#19 0x3093687c in _UIApplicationHandleEvent ()
#20 0x3204696c in PurpleEventCallback ()
#21 0x30254a76 in CFRunLoopRunSpecific ()
#22 0x3025416a in CFRunLoopRunInMode ()
#23 0x308f0354 in -[UIApplication _run] ()
#24 0x308eea94 in UIApplicationMain ()
#25 0x0000f056 in main (argc=1, argv=0x2ffff7c8) at ...... Classes/main.m:16
Current language:  auto; currently objective-c

问题: 您知道这是什么以及如何修复它吗?

我正在 Xcode 4.2.1 中构建。

PS - 通过清理构建或重新保存 .xib 文件无法解决该问题。有时,应用程序会通过此阶段,但当它看到稍后的 .xib 时,例如在加载视图控制器时,会因明显相同的原因而崩溃。

I'm finishing off an app for iOS 3.0 and up to run on the iPhone and iPod Touch. It's working fine on iOS4.0 and up, but when I backtest it on a second generation iPod Touch running iOS 3.0 the launch image shows and I'm met with the following:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive (0x4e, 0x49, 0x42, 0x41, 0x72, 0x63, 0x68, 0x69)'
2012-01-15 09:35:53.025 MyApp[3026:207] Stack: (
    808001701,
    805397928,
    807551015,
    807550919,
    810902709,
    815043196,
    815042704,
    814682908,
    814682012,
    814970032,
    814968048,
    814966908,
    839149932,
    807750263,
    807747947,
    814678868,
    814672532,
    61527,
    10764
)
terminate called after throwing an instance of 'NSException'
(gdb) backtrace
#0  0x31dd594c in __kill ()
#1  0x31dd5940 in kill ()
#2  0x31dd5934 in raise ()
#3  0x31deccfe in abort ()
#4  0x374ef848 in __gnu_cxx::__verbose_terminate_handler ()
#5  0x300166c0 in _objc_terminate ()
#6  0x374ecf3c in __cxxabiv1::__terminate ()
#7  0x374ecfb4 in std::terminate ()
#8  0x374ed0dc in __cxa_throw ()
#9  0x300165e4 in objc_exception_throw ()
#10 0x30224026 in +[NSException raise:format:arguments:] ()
#11 0x30223fc6 in +[NSException raise:format:] ()
#12 0x305564b4 in -[NSKeyedUnarchiver initForReadingWithData:] ()
#13 0x3094927c in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:] ()
#14 0x30949090 in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:] ()
#15 0x308f131c in -[UIApplication _loadMainNibFile] ()
#16 0x308f0f9c in -[UIApplication _runWithURL:sourceBundleID:] ()
#17 0x309374b0 in -[UIApplication handleEvent:withNewEvent:] ()
#18 0x30936cf0 in -[UIApplication sendEvent:] ()
#19 0x3093687c in _UIApplicationHandleEvent ()
#20 0x3204696c in PurpleEventCallback ()
#21 0x30254a76 in CFRunLoopRunSpecific ()
#22 0x3025416a in CFRunLoopRunInMode ()
#23 0x308f0354 in -[UIApplication _run] ()
#24 0x308eea94 in UIApplicationMain ()
#25 0x0000f056 in main (argc=1, argv=0x2ffff7c8) at ...... Classes/main.m:16
Current language:  auto; currently objective-c

Any ideas what this is and how to fix it?

I'm building in Xcode 4.2.1.

PS - The problem is not resolved by cleaning the build or by resaving .xib files. Sometimes the app will get past this stage but will crash for apparently the same reason when it sees a later .xib, say in loading a view controller.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

简单 2025-01-03 08:08:05

我相信这个答案涵盖了 Ikuragames 可能给出的内容(他不在电脑旁边)。代表他解决 Xcode 4.2.1 中的问题,单击 .xib 文件,然后在右侧的文件属性面板中,将部署设置为“iOS 3.0”(在我的例子中)并将开发设置为“Interface Builder” 3.0"(同样是我的情况)。对项目中的每个 .xib 文件执行此操作。

值得记住的是,Xcode 4.2.1 很可能会在此处为部署设置默认值“iOS 5.0”,以匹配当前的 SDK,并为文档类型设置“Xcode 4.1”。为什么 Xcode 不只是将部署目标与项目部署目标相匹配,我不确定...

如果这仍然不起作用,或者您在这个阶段非常偏执,请捕获 NSKeyedUnarchiver 引发的异常 加载 .xib 文件并以编程方式创建视图时。

在此处输入图像描述

This answer I believe covers what Ikuragames might have given (he's not near his computer). On his behalf, to solve the problem in Xcode 4.2.1 click on the .xib file and in the file properties panel on the right hand side, set the deployment to "iOS 3.0" (in my case) and development to "Interface Builder 3.0" (again in my case). Do this for every single .xib file in the project.

It's worth keeping in mind that Xcode 4.2.1 might well set defaults of "iOS 5.0" for the deployment here, to match the current SDK, and "Xcode 4.1" for the document type. Why Xcode doesn't just match the deployment target with the project deployment target I'm not sure...

If this still doesn't work or you're very paranoid by this stage, catch the exception raised by the NSKeyedUnarchiver when loading the .xib file and there create the view programmatically.

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文