問題文 : すべてのバックエンド処理を行う 1 つのセカンダリ スレッドがあります。このセカンダリ スレッドでは、実行する別の NSRunLoop を作成しました。このランループでタイマーを作成して使用します
NSAutoreleasePool *myPool = [[NSAutoreleasePool alloc] init];
NSRunLoop * threadRL = [NSRunLoop currentRunLoop];
[threadRL addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];
[threadRL run];
[myPool release];
セレクターへの呼び出しの1つが実行に約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 が別のモードになっている可能性があるということです。
ファンドを最優先で実行する方法はありますか。つまり、ランループで実行されているものを中断するなどです。