Итак, я запускаю новый NSThread, который я хотите иметь возможность использовать позже, вызвав performSelector: onThread: ...
. Насколько я понимаю, вызов этих методов добавляет этот вызов к циклу выполнения в этом потоке, поэтому на следующей итерации он будет выдавать все эти вызовы и впоследствии вызывать их, пока не останется ничего для вызова. Так что мне нужна такая функциональность, готовый к работе незанятый поток, который я просто могу вызвать. Мой текущий код выглядит следующим образом:
- (void)doInitialize
{
mThread = [[NSThread alloc] initWithTarget:self selector:@selector(runThread) object:nil];
[mthread start];
}
- (void)runThread
{
NSAutoReleasePool *pool = [[NSAutoReleasePool alloc] init];
// From what I understand from the Google machine is that this call should start the
// runloop on this thread, but it DOESN'T. The thread dies and is un-callable
[[NSRunLoop currentRunLoop] run];
[pool drain];
}
- (void)scheduleSomethingOnThread
{
[self performSelector:@selector(hardWork) onThread:mThread withObject:nil waitUntilDone:NO];
}
Но поток не поддерживается, и performSelector: onThread ничего не делает. Как мне сделать это правильно?