问题陈述:我们有一个辅助线程,我们在其中进行所有后端处理。在这个辅助线程中,我们创建了一个单独的 NSRunLoop 来运行。我们在这个运行循环中创建和使用计时器
NSAutoreleasePool *myPool = [[NSAutoreleasePool alloc] init];
NSRunLoop * threadRL = [NSRunLoop currentRunLoop];
[threadRL addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];
[threadRL run];
[myPool release];
除了对选择器的调用需要将近 10 秒的时间来执行之外,每件事都运行良好,而且这种情况并非每次都随机发生。
[myclass performSelector:@selector(func) onThread:myThread withObject:nil waitUntilDone:NO];
我也试过了,没有区别。
[myclass performSelector:@selector(func) onThread:myThread withObject:nil waitUntilDone:NO modes:[NSArray arrayWithObjects: NSDefaultRunLoopMode, NSRunLoopCommonModes,nil]];
我没有在 func 中做任何可能需要这么多时间的任务,
我在想的是,runloop 可能处于不同的模式。
有没有办法让资金以最高优先级执行,即在运行循环中执行的内容被中断或类似的东西。