跟踪就像这样
Application received signal SIGSEGV
Stack trace:
#0 CoreFoundation 002BCE149F <redacted>()
#1 libobjc.A.dylib 00394F8C8B objc_exception_throw()
#2 CoreFoundation 002BCE13E5 -[NSException initWithCoder:]
#3 funadhoc 000025B129 UmengSignalHandler()
#4 libsystem_platform.dylib 0039BB8873 _sigtramp()
#5 libobjc.A.dylib 0039505571 objc_setProperty_nonatomic_copy()
#6 Foundation 002C947F59 -[NSObject setValue:forKey:]
#7 Foundation 002C9C58F3 -[NSObject setValuesForKeysWithDictionary:]
..........................
我了解setValue:forUndefinedKey:
或setNilValueForKey:
的情况,但这是什么?
此外,一些系统符号为<redacted>
,我如何才能将其符号化?
答案 0 :(得分:0)
在这种情况下,_sigtramp()表示您的应用程序收到了Unix信号,在本例中为SIGSEGV。 SIGSEGV意味着您的应用程序因内存访问冲突而被发送此信号。在这种情况下,我猜测它是由你调用setValue:forKey:引起的。也许您调用的对象setValue:forKey:on(该方法的接收者)已被解除分配?或者可能是密钥或值已被解除分配?这可能是你应该检查的。
尝试启用NSZombieEnabled(环境变量)。它将保持物体周围并标记为&#34; Zombie&#34;然后向您报告您尝试访问僵尸。如果您使用ARC,则可能对该对象有一些不安全的未引用的引用。你需要有一个强有力的参考。如果它不是ARC,那么你可能无法正确保留它。