Сохраните NSThread и запустите на нем NSRunLoop

Итак, я запускаю новый 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 ничего не делает. Как мне сделать это правильно?

22
задан Parag Bafna 6 October 2014 в 11:01
поделиться