我读了很多关于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
什么都没有?