iphone – 确定一个对象是否被多个线程访问?

我正在进行零星的EXC_BAD_ACCESS崩溃,我认为这与多线程问题有关. (我尝试使用Zombies进行分析,但在分析时应用程序不会崩溃).所以我想知道是否有任何类型的机制,为了调试目的,确定一个对象是否被多个线程同时访问?如果是这样的话,也许以某种方式打印日志声明?
最佳答案
告诉你是否是在线程上执行的唯一一个简单而肮脏的方法将依赖于无人看守的静态变量:

-(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;
}

转载注明原文:iphone – 确定一个对象是否被多个线程访问? - 代码日志