我正在尝试测试我的Mac OS应用程序,它在10.8上运行良好但是当我开始在mac 10.6.3(iatkos s3)上测试时,我遇到了一些问题。
首先,我必须使用单独的计算机来安装10.6.3,因为我的macbook air不允许我安装10.6.3(硬件比软件更新)。我做的是,在xcode中我运行它,获取.app文件,将它放到我的10.6.3应用程序文件夹然后运行它。
我在那里放了一些跟踪日志,这是我的代码:
- (void) startMethodInBackground: (id) sender {
NSLog(@"line 101"); //this shows
[self performSelectorInBackground:@selector(myOtherMethod:) withObject:sender];
NSLog(@"line 102"); //not showing
}
- (void) myOtherMethod: (id) sender {
NSLog(@"line 201"); //not showing
@autoreleasepool {
NSLog(@"line 202"); //again not showing
@synchronized (self) {
NSLog(@"line 203"); //not showing
... ...
}
}
}
Version: 1.0 (1)
Code Type: X86-64 (Native)
Parent Process: launchd [1126]
Date/Time: 2013-02-28 16:53:10.668 -0500
OS Version: Mac OS X 10.6.3 (10D573)
Report Version: 6
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
Crashed Thread: 2
... (too long so I trimmed it)
...
Thread 2 Crashed:
0 ??? 000000000000000000 0 + 0
1 com.apple.Foundation 0x00007fff814e4ead __NSThread__main__ + 1429
2 libSystem.B.dylib 0x00007fff86db38b6 _pthread_start + 331
3 libSystem.B.dylib 0x00007fff86db3769 thread_start + 13
Thread 2 crashed with X86 Thread State (64-bit):
rax: 0x0000000000000000 rbx: 0x0000000100863400 rcx: 0x0000000000000000 rdx: 0x00000001001417b0
rdi: 0x00000001001417b0 rsi: 0x0000000000000000 rbp: 0x0000000100480c90 rsp: 0x0000000100480b08
r8: 0x0000000000000000 r9: 0x0000000100201530 r10: 0x0000000100210870 r11: 0x0000000100002120
r12: 0x00007fff5fbfe800 r13: 0x0000000000001b07 r14: 0x00007fff814e4918 r15: 0x0000000102e0ec20
rip: 0x0000000000000000 rfl: 0x0000000000010202 cr2: 0x0000000000000000
正如我在代码中看到的那样,只要我调用myOtherMethod:使用performSelectorInBackground:,它就崩溃了!
所以我的问题是:
为什么调用performSelectorInBackground崩溃?我检查了performSelectorInBackground方法,它应该在10.6上工作正常(苹果文档说10.5或更高版本),所以我真的要发生了什么!!!
崩溃报告对我来说真的没有意义,所以在现实生活中你怎么能用这样的报告进行调试?在xcode中,如果有任何问题,它会崩溃并告诉我哪个方法导致了问题以及问题是什么,但正如你所看到的,崩溃报告并没有告诉我太多!
感谢任何帮助。 约什
答案 0 :(得分:0)
它看起来像一个腐败的堆栈。
您是否可能在myOtherMethod
中分配大量内存,就像一个大C阵列一样?在主线程上调用myOtherMethod
会发生什么?