ios - 设置值 :forKey crash with _sigtramp

标签 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> ,如何将其符号化?

最佳答案

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

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

关于ios - 设置值 :forKey crash with _sigtramp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27656618/

相关文章:

ios - Google iOS DFP 和 Analytics for iOS 无法协同工作

ios - 使用 Swift 4 在 WatchOS 中创建一个简单的计时器

ios - 在应用程序委托(delegate)中返回之前等待异步任务完成完成 block

iphone - 查看未触发的加载方法

iphone - iOS 4 : Remote controls for background audio

ios - UIDocumentMenuViewController initWithDocumentTypes :inMode: can only be called with mode Import or Open

ios - Twitter 的 NSXmlParserError

iphone - 为什么我的观察员未注册?

iOS 应用程序在使用 XCode 调试器启动时崩溃,在没有调试器的情况下运行良好

firebase - 在物理设备上测试时,应用崩溃