设置基础 SDK 后,iPhone 模拟器在 NSKeyedUnarchiver 中崩溃
Posted
技术标签:
【中文标题】设置基础 SDK 后,iPhone 模拟器在 NSKeyedUnarchiver 中崩溃【英文标题】:iPhone Simulator chrashes in NSKeyedUnarchiver after setting base SDK 【发布时间】:2010-01-28 15:04:57 【问题描述】:我在 xcode(雪豹上的 3.2)中使用基础 sdk 3.1.2 开始了一个项目。现在我将此设置更改为 3.0,它编译时没有警告。在设备上运行应用程序没有问题,但模拟器每次启动时都会崩溃,但以下异常:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“[NSKeyedUnarchiver initForReadingWithData:]:无法理解的存档(0x4e、0x49、0x42、0x41、0x72、0x63、0x68、0x69)”
我不使用NSKeyedUnarchiver
,那么为什么应用程序会尝试调用它?什么档案是不可理解的?我在构建之前重置了模拟器,所以周围没有 userDefaults 或其他任何东西。
感谢您的帮助!
【问题讨论】:
【参考方案1】:我用这个详细的堆栈跟踪解决了这个问题:
#0 0x302ac924 in ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___
#1 0x904a3509 in objc_exception_throw
#2 0x3028e5fb in +[NSException raise:format:arguments:]
#3 0x3028e55a in +[NSException raise:format:]
#4 0x30513b77 in -[NSKeyedUnarchiver initForReadingWithData:]
#5 0x30ab4b2a in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:]
#6 0x30ab6eb3 in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:]
#7 0x308f85f1 in -[UIApplication _loadMainNibFile]
#8 0x30901a15 in -[UIApplication _runWithURL:sourceBundleID:]
#9 0x308fef33 in -[UIApplication handleEvent:withNewEvent:]
#10 0x308fad82 in -[UIApplication sendEvent:]
#11 0x309013e1 in _UIApplicationHandleEvent
#12 0x32046375 in PurpleEventCallback
#13 0x30245560 in CFRunLoopRunSpecific
#14 0x30244628 in CFRunLoopRunInMode
#15 0x308f930d in -[UIApplication _run]
#16 0x309021ee in UIApplicationMain
#17 0x0000255c in main at main.m:14
应用程序在调用 mainNibFile 时崩溃。而且我不知道为什么,只是简单地重新保存 MainWindow.xib 解决了问题。
【讨论】:
【参考方案2】:尝试从模拟器中完全卸载您的应用 - 它可能会在某处存储一些与设置有关的数据?
您是否有来自调试器的堆栈跟踪显示对 NSKeyedUnarchiver 的调用来自何处?
S
【讨论】:
重置模拟器或卸载应用程序无济于事。我错了:在 3.0 设备上发生同样的异常。但是在具有 3.1.2 的设备上使用相同的构建没有问题。堆栈跟踪:... #4 in -[NSKeyedUnarchiver initForReadingWithData:], #5 in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:], #6 in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:], #7在 -[UIApplication _loadMainNibFile], #8 在 -[UIApplication _runWithURL:sourceBundleID:] ...【参考方案3】:在
之后我也遇到了同样的问题-
将我的 Xcode 项目发送到 FTP 远程服务器(使用 FileZilla)
重新下载
并启动它以检查文件是否顺利通过。重新下载的文件有这个问题。
我认为 ftp 会导致捆绑文件(例如 .xcodeproj)出现问题,因为有时 .pages 和 .numbers 文件也会出现问题。
我解决了这个问题
-
压缩我的项目 (.zip)
在 ftp 上上传 .zip。
重新下载
解压
启动后就没有问题了!
【讨论】:
以上是关于设置基础 SDK 后,iPhone 模拟器在 NSKeyedUnarchiver 中崩溃的主要内容,如果未能解决你的问题,请参考以下文章
iPhone SDK:可以通过iPad设备访问Localhost吗? (调试时)
iPhone SDK UIScrollView 移动后没有触摸事件