我正在进行零星的EXC_BAD_ACCESS崩溃,我认为这与多线程问题有关。 (我尝试使用Zombies进行分析,但在分析时应用程序不会崩溃)。所以我想知道是否有任何类型的机制,为了调试目的,确定一个对象是否被多个线程同时访问?如果是这种情况,也许以某种方式打印一个日志声明?
答案 0 :(得分: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;
}