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
私のコードでわかるように、performSelectorInBackground: を使用して myOtherMethod: を呼び出すとすぐに、クラッシュしました!!
私の質問は次のとおりです。
performSelectorInBackground の呼び出しがクラッシュした理由は?? performSelectorInBackground メソッドを確認したところ、10.6 で正常に動作するはずです (Apple のドキュメントでは 10.5 以降と記載されています)。
クラッシュ レポートは私にはまったく意味がありません。実際にそのようなレポートを使用してデバッグするにはどうすればよいでしょうか。xcode では、問題があればクラッシュし、どのメソッドが問題を引き起こし、何が問題だったのかを教えてくれますが、ご覧のとおり、クラッシュ レポートはあまり教えてくれませんでした!
どんな助けでも大歓迎です。ジョシュ