4

マルチスレッドの問題に関係していると考えている、散発的なEXC_BAD_ACCESSのクラッシュが発生しています。(ゾンビでプロファイリングを試みましたが、プロファイリング時にアプリがクラッシュしません)。それで、デバッグの目的で、オブジェクトが複数のスレッドによって同時にアクセスされているかどうかを判断するための何らかのメカニズムがあるかどうか疑問に思っていますか?もしそうなら、多分どういうわけかログステートメントを印刷しますか?

4

1 に答える 1

5

スレッドで実行しているのがあなただけかどうかを判断する簡単で汚い方法は、保護されていない静的変数に依存します。

-(void)concurrentMethod {
    static NSThread *runningThread = nil;
    NSThread *myThread = [NSThread currentThread];
    if (runningThread != nil) {
        NSLog(@"Thread %@: running concurrently with %@", runningThread, myThread);
    }
    runningThread = myThread;

    ... // Do the useful stuff here

    if (runningThread != myThread) {
        NSLog(@"Thread %@: pre-empted by %@", myThread, runningThread);
    }
    runningThread = nil;
}
于 2012-07-17T18:42:28.317 に答える