【发布时间】:2014-03-26 05:34:36
【问题描述】:
显然我的应用程序在使用实时服务器时崩溃了。当用户更改地图区域时,我正在下载 XML。服务器返回边界框的数据,我的应用程序显示注释。但是,当一个地方设置了 url 变量时,我的应用程序就会崩溃。它甚至不会在异常断点处中断,而是直接进入 main.m。
我的设备崩溃日志如下所示:
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread: 0
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x3b06f1fc __pthread_kill + 8
1 libsystem_pthread.dylib 0x3b0d6a4e pthread_kill + 54
2 libsystem_c.dylib 0x3b020028 abort + 72
3 libsystem_malloc.dylib 0x3b09d758 szone_error + 312
4 libsystem_malloc.dylib 0x3b09da1a free_tiny_botch + 62
5 CoreFoundation 0x30692fd6 CFRelease + 890
6 APPName 0x0011ef04 -[MyPlaceClass dealloc] (MyPlaceClass.mm:650)
7 APPName 0x0011f684 -[MyTextPlace dealloc] (MyTextPlace.m:46)
8 libobjc.A.dylib 0x3aacab06 objc_object::sidetable_release(bool) + 170
9 CoreFoundation 0x30692e88 CFRelease + 556
10 CoreFoundation 0x3069e3b4 -[__NSArrayM dealloc] + 156
11 libobjc.A.dylib 0x3aacab06 objc_object::sidetable_release(bool) + 170
12 libobjc.A.dylib 0x3aabc01e (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 354
13 CoreFoundation 0x306961c4 _CFAutoreleasePoolPop + 12
14 UIKit 0x32edf80c _wrapRunLoopWithAutoreleasePoolHandler + 32
15
我检查了 (MyPlaceClass.mm:650) 和 (MyTextPlace.m:46)。看起来就像这样:
MyPlaceClass.mm 在第 650 行
- (void)dealloc {
.....
[placeURL release]; // <- This is line 650
[super dealloc];
}
MyTextPlace.m 第 46 行
- (void)dealloc {
[textContent release]; // <- This is line 46
[super dealloc];
}
有人知道是什么导致我的设备出现错误和崩溃吗?我发现调试非常困难,因为我的异常断点不起作用。
【问题讨论】:
-
textContent 和 placeURL 的数据类型是什么?
-
我的猜测是
placeURL已经被释放并且指针悬空。再次释放它会导致段错误 -
显示 textContent 和 placeURL 的分配
-
是的 placeURL 已经发布.... 愚蠢但感谢您的帮助! (也许将其作为答案发布,以便我接受?)
-
开始使用 ARC 而不是非 ARC
标签: objective-c xml memory-management crash