Правильный способ остановить выполнение вашего потока - попросить его прекратить выполнение. Затем в своей ветке вы слушаете такие запросы и выполняете их в подходящее время.
Согласно Руководству по программированию нитей Apple :
Хотя Cocoa, POSIX и Multiprocessing Services предлагают процедуры для непосредственного уничтожения потоков, использование таких процедур настоятельно не рекомендуется. Уничтожение нити не позволяет этой нити очиститься после себя. Память, выделенная потоком, может быть утечка, и любые другие ресурсы, используемые в данный момент потоком, могут быть не очищены должным образом, что впоследствии может создать потенциальные проблемы.
Если вы ожидаете, что нужно завершить поток в середине операции, вы должны с самого начала проектировать потоки, чтобы они отвечали на сообщение об отмене или выходе. Для длительных операций это может означать периодическую остановку работы и проверку наличия такого сообщения. Если приходит сообщение с запросом на выход из потока, тогда поток будет иметь возможность выполнить любую необходимую очистку и завершить работу корректно; в противном случае он может просто вернуться к работе и обработать следующий фрагмент данных.
Вы можете использовать [NSThread exit];
в своем потоке, чтобы остановить себя, т.е. отменить текущий поток,
или вы также можете использовать [NSThread cancel]
метод , чтобы сообщить другой поток в вашей программе для отмены ..