Я все еще ищу лучший ответ на этот вопрос, но вот что я делаю:
Используйте NSLock для создания блокировки, которая не позволяет мне получить доступ к одной и той же переменной в обоих потоках.Затем используйте BOOL, чтобы увидеть, хочет ли главный поток инициировать остановку.
в главном потоке:
[myLock lock];
exitFlag = YES;
[myLock unlock];
, в другом потоке:
endMe = NO;
while(!endMe)
{
// do your task stuff
[myLock lock];
endMe = exitFlag;
[myLock unlock];
}
* 1010.* Для второй части вашего вопроса используйте следующее:
[self performSelectorOnMainThread:@selector(your_selector_name) withObject:nil waitUntilDone:false];
Это приведет к тому, что подпрограмма выбора будет выполняться в главном потоке.
Надеюсь, это поможет