Есть много опций, слишком много, чтобы перечислять их полностью, но, возможно, самый простой способ заштриховать только один дополнительный поток - это executeSelectorInBackground: withObject: , например,
[self performSelectorInBackground:@selector(doSomething:) withObject:nil];
- (void)doSomething:(id)object
{
NSLog(@"I'm running on a separate thread!");
}
Существует также executeSelectorOnMainThread: withObject: waitUntilDone: для передачи данных обратно в основной поток для UIKit и различных других средств диспетчеризации селекторов для определенных других потоков.
Вы можете напрямую поговорить с NSThread , если хотите настроить приоритеты или иным образом заштриховать нити более определенным образом. Будьте осторожны в любом случае, поскольку у вас не будет пула автоматического выпуска в фоновом потоке, если вы не создадите его самостоятельно.
Если вы планируете выпускать много потоков, вам, вероятно, следует отправить NSInvocationOperations в NSOperationQueue . Очереди работы гарантируют, что операции распределяются по фоновым потокам оптимальным образом для числа процессоров и ядер, которые есть на вашем устройстве.
Вы должны быть полностью уверены, что хотите фоновый поток, хотя. Как правило, если что-то может работать синхронно или асинхронно, отправляя сообщения в основной поток, последний является более эффективным способом, особенно с точки зрения срока службы батареи. Новые основанные на блоках асинхронные методы убирают много спагетти из написания кода, управляемого событиями, который должен выполнять простое линейное действие, так что, если вы хорошо придерживаетесь iOS 4 и выше, проверьте их.