【发布时间】:2014-07-03 22:16:43
【问题描述】:
我正在构建一个带有 MQTTKit 和 Estimote iOS SDK 的小型演示应用程序,用于对信标进行范围划分并将信标邻近 uuid、主要和次要发送到 MQTT 代理。
该示例在一段时间内可以正常工作,但有时它会崩溃并且我在Thread 1 - Queue:com.apple.main-thread 上收到EXC_BAD_ACCESS (code=2, address=0x27c8eff4))。在 XCode 中,调试时抛出异常时我可以看到以下内容:
CoreFoundation`CFRelease:
0x2fdc9f54: push {r4, r5, r6, r7, lr}
这就是异常发生的地方,但我不知道它代表什么,也不知道它意味着什么。
谁能指出我没有保留或释放到早期的东西,因为从我所读到的东西是被释放到早期并在释放后尝试访问它们的对象行中的一些东西?
编辑:根据评论的建议,我启用了NSZombies 和异常断点,现在我得到了更多信息:
Pulsr(21312,0x3cb4118c) malloc: *** error for object 0x16f27404: incorrect checksum for freed object - object was probably modified after being freed. *** set a breakpoint in malloc_error_break to debug
它停在的那一行是[UIView animateWith ...];:
dispatch_async(dispatch_get_main_queue(), ^(void){
[UIView animateWithDuration:0.250
delay:0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
weakSelf.streamingCountLabel.layer.backgroundColor = streaming ? weakSelf.yellowColor.CGColor : weakSelf.redColor.CGColor;
}
completion:nil];
if (!streaming)
{
weakSelf.streamingCountLabel.text = @"0";
}
});
【问题讨论】:
-
找不到线路? NSZOmbies 没有帮助你?
-
启用异常断点,并在您的问题中包含调用堆栈。此外,按照@Larme 的建议启用 Zombies。您将能够很容易地找到所有这些步骤的说明
-
尝试为您的项目运行
Analyze,有时它能够找到您遗漏的明显问题。 -
@a-live 我已经做到了,唯一的问题是其中一个 pod 有问题,一些变量从未使用过。
标签: ios objective-c ios7 exc-bad-access