我有一个在iOS8 SDK上构建的应用程序,我将其归档,然后签署特设分发。
这已经在所有设备上运行了2年,并进行了各种更新。现在我有一个iPhone 6 plus。
在新安装后,应用第一次运行得很好,但现在它一直崩溃与错误。
"XPC API Misuse. Given object not of required type Given object not of required type"
这发生在它进入之前 didFinishLaunchingWithOptions
呼叫栈。
Thread 0 name: XPC API Misuse: Given object not of required type. Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libxpc.dylib 0x0000000197dd99d8 _xpc_api_misuse + 60
1 libxpc.dylib 0x0000000197dd99d4 _xpc_api_misuse + 56
2 libxpc.dylib 0x0000000197dc9ae8 xpc_dictionary_set_value + 88
3 libxpc.dylib 0x0000000197dc5538 xpc_dictionary_set_string + 48
4 CoreFoundation 0x0000000186e4b590 _CFXNotificationRemoveObservers + 912
5 Foundation 0x0000000187d1ff20 -[NSNotificationCenter removeObserver:name:object:] + 252
6 UIKit 0x000000018b8588e4 -[UITableView dealloc] + 96
7 UIKit 0x000000018b6bf510 -[UIView(Hierarchy) removeFromSuperview] + 696
8 UIKit 0x000000018b79cb24 -[UIScrollView removeFromSuperview] + 76
9 UIKit 0x000000018b6c219c -[UIView dealloc] + 444
10 CoreFoundation 0x0000000186e217e4 CFRelease + 520
11 CoreFoundation 0x0000000186e2dda4 -[__NSArrayM dealloc] + 148
12 libobjc.A.dylib 0x0000000197599720 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 560
13 CoreFoundation 0x0000000186e25400 _CFAutoreleasePoolPop + 24
14 Foundation 0x0000000187d1f180 -[NSAutoreleasePool release] + 144
15 UIKit 0x000000018b72f9ac -[UIApplication _run] + 584
16 UIKit 0x000000018b72a980 UIApplicationMain + 1484
17 HelloWorld 0x000000010000636c main (main.m:16)
18 libdyld.dylib 0x0000000197beea04 start + 0
谁能帮帮我?
我修复了我自己的应用程序中的崩溃,但我不能100%地指出根本原因。我怀疑是内存损坏或过度保留一个对象。
关键是 [UITableView dealloc]
我在我的表视图中实现了dealloc,看看问题发生在哪里。最终,我将其归结为一个 UITableViewCell
从一个.xib文件中实例化。这个特殊的 .xib 文件包含了多个 UITableViewCell
s. 在给每个表视图赋予它自己的.xib后,崩溃消失了。
对我来说,当我从模拟器上运行一些视频编辑代码时,我得到了xpc api误用崩溃!(iOS 13),这个问题没有出现在真实设备上。