iOS和unarchiving xib文件

我正在完成iOS 3.0的应用程序,并在iPhone和iPod Touch上运行。 它在iOS4.0及更高版本上工作正常,但是当我在运行iOS 3.0的第二代iPod Touch上对其进行testing时,启动图像显示,并遇到以下情况:

*** 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中build立。

PS – 通过清除构build或通过重新保存.xib文件未解决问题。 有时候应用程序会经过这个阶段,但是在加载视图控制器的时候会看到一个稍后的.xib文件,显然会出现同样的原因。

我相信这个答案涵盖了Ikuragames可能给的(他不在他的电脑附近)。 为了解决这个问题,在Xcode 4.2.1中点击.xib文件,在右边的文件属性面板中,将部署设置为“iOS 3.0”(在我的情况下),开发为“Interface Builder 3.0“(在我的情况下)。 为项目中的每个.xib文件执行此操作。

值得一提的是,Xcode 4.2.1可能会在这里configuration默认的“iOS 5.0”,以匹配当前的SDK,而“Xcode 4.1”则为文档types。 为什么Xcode不仅仅将部署目标与项目部署目标相匹配我不确定…

如果这仍然不起作用,或者你在这个阶段非常偏执,加载NSKeyedUnarchiver文件时捕获NSKeyedUnarchiver引发的exception,然后以编程方式创build视图。

在这里输入图像说明