В каком потоке вы работаете «[NSThread exit]»? [Выход NSThread] запускается в потоке current, поэтому вам нужно называть это частью модуля myfunction. Если вы вызовете его в основном потоке, он просто выйдет из основного потока.
Также не рекомендуется останавливать такие потоки, поскольку это предотвращает выход потока из очистки ресурсов.
myfunction должен выйти на основе общей переменной с координирующей нитью.
- (void) myFunction
{
while([someObject stillWorkToBeDone])
{
performBitsOfWork();
}
}
Вы можете поделиться ссылкой между координирующим потоком и рабочим потоком, используя «withObject». Таким образом, координирующий поток может изменить переменную экземпляра в общем объекте, чтобы рабочий поток мог остановить работу на основе этого условия.
Для выхода из рабочего потока координирующим поток будет просто назвать чем-л, как:
[someObject setStillWorkToBeDone:false];