【问题标题】:setValue:forKey crash with _sigtrampsetValue:forKey 与 _sigtramp 崩溃
【发布时间】:2014-12-26 11:39:22
【问题描述】:

痕迹是这样的

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:的情况,但这是什么?

另外,有些系统符号是&lt;redacted&gt;,我怎样才能把它符号化?

【问题讨论】:

  • 如果你不发布代码有点棘手找到问题。

标签: ios iphone crash kvc


【解决方案1】:

在这种情况下,_sigtramp() 表示您的应用程序收到了一个 Unix 信号,在这种情况下是 SIGSEGV。 SIGSEGV 表示您的应用由于内存访问冲突而收到此信号。在这种情况下,我猜它是由您调用 setValue: forKey: 引起的。也许您调用的对象 setValue:forKey: on (该方法的接收者)已经被释放了?或者也许键或值已被释放?这可能是您应该检查的内容。

尝试开启 NSZombieEnabled(环境变量)。它将保留对象并标记为“僵尸”,然后向您报告您试图访问僵尸。如果您使用的是 ARC,您可能对对象有一些不安全的未保留引用。你需要对它有一个强有力的参考。如果它不是 ARC,那么您可能无法正确保留它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2010-09-13
    • 2011-11-07
    • 2018-07-14
    • 2020-01-26
    相关资源
    最近更新 更多