내 Mac OS 응용 프로그램을 테스트하려고하는데, 10.8에서 제대로 작동했지만 Mac 10.6.3에서 테스트를 시작할 때 (iatkos s3) 문제가 발생했습니다. .performSelectorInBackground : Mac OS X 10.6.3에서 즉시 충돌했습니다.
먼저 Macbook air에서 10.6.3 (하드웨어는 소프트웨어보다 최신 버전)을 설치할 수 없으므로 별도의 컴퓨터를 사용하여 10.6.3을 설치해야합니다. 내가 한 것은 xcode에서 .app 파일을 가져 와서 10.6.3 응용 프로그램 폴더에 넣은 다음 실행하는 것입니다.
나는 거기에 약간의 추적 로그를 넣고 여기에 내 코드입니다 : 당신은 최대한 빨리 myOtherMethod 전화로, 내 코드에서 볼 수 있듯이
- (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
: performSelectorInBackground를 사용하여 :,가 추락!
그래서 제 질문은 다음과 같습니다
어떤 이유는 performSelectorInBackground 추락 부르심 왜? performSelectorInBackground 메서드를 확인한 결과 10.6 (apple 문서에서는 10.5 이상이라고합니다)에서 정상적으로 작동하므로 실제로 발생한 결과가 발생했습니다.
충돌 보고서는 실제로 나에게 의미가 없으므로 실생활에서 어떻게 그러한 보고서로 디버그 할 수 있습니까? xcode에서 문제가 발생하면 충돌이 발생하고 어떤 방법으로 문제가 발생했는지, 문제는 무엇인지 알려주지 만 볼 수 있듯이 충돌 보고서는 나에게 많은 것을 알려주지 않았습니다!
도움을 주시면 감사하겠습니다. Josh
개체를 할당 해제 할 수 있습니까? – paulmelnikow