我在iOS8 SDK上构建了一个应用程序,将其存档,然后签名进行即席分发。

在具有各种更新的所有设备上,此功能已经使用了2年。现在我有一部iPhone 6 plus。

全新安装后,该应用程序可以很好地运行,但现在它始终崩溃并显示错误消息:



这发生在进入didFinishLaunchingWithOptions之前

调用堆栈:
Thread 0 name: XPC API Misuse: Given object not of required type. Dispatch queue: com.apple.main-threadThread 0 Crashed:0 libxpc.dylib 0x0000000197dd99d8 _xpc_api_misuse + 601 libxpc.dylib 0x0000000197dd99d4 _xpc_api_misuse + 562 libxpc.dylib 0x0000000197dc9ae8 xpc_dictionary_set_value + 883 libxpc.dylib 0x0000000197dc5538 xpc_dictionary_set_string + 484 CoreFoundation 0x0000000186e4b590 _CFXNotificationRemoveObservers + 9125 Foundation 0x0000000187d1ff20 -[NSNotificationCenter removeObserver:name:object:] + 2526 UIKit 0x000000018b8588e4 -[UITableView dealloc] + 967 UIKit 0x000000018b6bf510 -[UIView(Hierarchy) removeFromSuperview] + 6968 UIKit 0x000000018b79cb24 -[UIScrollView removeFromSuperview] + 769 UIKit 0x000000018b6c219c -[UIView dealloc] + 44410 CoreFoundation 0x0000000186e217e4 CFRelease + 52011 CoreFoundation 0x0000000186e2dda4 -[__NSArrayM dealloc] + 14812 libobjc.A.dylib 0x0000000197599720 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 56013 CoreFoundation 0x0000000186e25400 _CFAutoreleasePoolPop + 2414 Foundation 0x0000000187d1f180 -[NSAutoreleasePool release] + 14415 UIKit 0x000000018b72f9ac -[UIApplication _run] + 58416 UIKit 0x000000018b72a980 UIApplicationMain + 148417 HelloWorld 0x000000010000636c main (main.m:16)18 libdyld.dylib 0x0000000197beea04 start + 0
有人可以帮忙吗?

最佳答案

我在自己的应用程序中修复了崩溃问题,但我无法100%指出根本原因。我怀疑这是内存损坏或过度保留对象。

关键是[UITableView dealloc],我在表 View 中实现了dealloc来查看发生问题的位置。我最终将其追溯到从.xib文件实例化的UITableViewCell。这个特定的.xib包含多个UITableViewCell。在为每个表 View 提供自己的.xib后,崩溃消失了。

关于iOS8/iPhone6 + XPC崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26417492/

10-14 21:43