setValue:forKey与_sigtramp崩溃

时间:2014-12-26 11:39:22

标签: ios iphone crash kvc

跟踪就像这样

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>,我如何才能将其符号化?

1 个答案:

答案 0 :(得分:0)

在这种情况下,_sigtramp()表示您的应用程序收到了Unix信号,在本例中为SIGSEGV。 SIGSEGV意味着您的应用程序因内存访问冲突而被发送此信号。在这种情况下,我猜测它是由你调用setValue:forKey:引起的。也许您调用的对象setValue:forKey:on(该方法的接收者)已被解除分配?或者可能是密钥或值已被解除分配?这可能是你应该检查的。

尝试启用NSZombieEnabled(环境变量)。它将保持物体周围并标记为&#34; Zombie&#34;然后向您报告您尝试访问僵尸。如果您使用ARC,则可能对该对象有一些不安全的未引用的引用。你需要有一个强有力的参考。如果它不是ARC,那么你可能无法正确保留它。