我的应用程序的客户向我发送了这个奇怪的崩溃报告,我无法弄清楚这是如何崩溃的。我自己无法重现这个问题,所以依赖于崩溃报告。
它在以下非常简单的代码行崩溃:
UITextField *value = [[UITextField alloc] initWithFrame:frame];
崩溃似乎与键值观察(KVO)有关,但我在这里没有做任何事情;这是一个简单的构造函数!
我能看到的唯一可能性是,另一个线程正在写入一个dealloc'ed对象,该对象恰好具有与initWithFrame:
创建的对象相同的内存地址。但在崩溃报告中,所有其他线程都很安静。
我找到了其他类似的问题,但没有一个有答案。
有什么想法吗?
以下是崩溃报告中的相关部分:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000010
Triggered by Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libobjc.A.dylib 0x0000000181981b90 objc_msgSend + 16
1 Foundation 0x0000000182bf2454 -[NSObject(NSKeyValueObserverNotification) willChangeValueForKey:] + 324
2 QuartzCore 0x0000000184deb11c CA::Layer::set_delegate(objc_object*) + 72
3 UIKit 0x0000000187456f40 -[UIView _createLayerWithFrame:] + 580
4 UIKit 0x0000000187456a00 UIViewCommonInitWithFrame + 688
5 UIKit 0x00000001874566f0 -[UIView initWithFrame:] + 140
6 UIKit 0x000000018745dfb0 -[UILabel initWithFrame:] + 48
7 UIKit 0x0000000187542064 -[UITextField createTextLabelWithTextColor:] + 76
8 UIKit 0x0000000187541c30 -[UITextField initWithFrame:] + 416
9 Flyskyhy 0x00000001000e1f68 -[ElementView doInitWithUnit:] (ElementView.m:178)