私はこれ、これ、これNSRunLoop
のように、多くの投稿を読みました。しかし、実際に何をするのか理解できませんNSRunLoop
私が通常目にするのはワーカースレッドです
wthread = [[NSThread alloc] initWithTarget:self selector:@selector(threadProc) object:nil];
[wthread start];
その中に NSRunLoop がある
- (void)threadProc
{
NSAutoreleasePool* pool1 = [[NSAutoreleasePool alloc] init];
BOOL isStopped = NO;
NSRunLoop *runloop = [NSRunLoop currentRunLoop];
[runloop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];
while (!isStopped)
{
{
NSAutoreleasePool* pool2 = [[NSAutoreleasePool alloc] init];
[runloop runMode:NSDefaultRunLoopMode
beforeDate:[NSDate distantFuture]];
[pool2 release];
}
}
[pool1 release];
}
そして、メインスレッドはこの wthread にいくつかの作業を渡します
[self performSelector:@selector(someWork:) onThread:wthread withObject:nil waitUntilDone:NO];
メイン スレッドからワーカー スレッドに作業を渡すという点では、多くの人がこれを行っているのを目にします。なぜここで NSRunLoop が必要なのですか? それは何をするためのものか ?
NSRunLoop
イベントの管理に使用されることを読みましたが、内部でrunModethreadProc
を呼び出す以外に何もないのはなぜですか?