Я создал одно тестовое приложение для запуска цикла глубокого счетчика. Я запускаю функцию цикла в фоновом потоке, используя performSelectorInBackground, а также подкласс NSOperation отдельно.
Я также использую performSelectorOnMainThread для уведомления основного потока в методе backgroundthread и [NSNotificationCenter defaultCenter] postNotificationName в подклассе NSOperation для уведомления основного потока об обновлении пользовательского интерфейса.
Первоначально обе реализации дали мне тот же результат, и я могу обновить пользовательский интерфейс без каких-либо проблем. Единственное различие, которое я обнаружил, - это количество потоков между двумя реализациями.
Реализация performSelectorInBackground создала один поток и завершила его после завершения цикла, и счетчик потоков моего приложения снова стал равным 1.
Реализация подкласса NSOperation создала два новых потока и сохраняет в приложении, и я могу видеть 3 потока после завершения цикла в функции main ().
Итак, мой вопрос: почему NSOperation создает два потока и почему он не завершился так же, как реализация первого фонового потока?
Я немного запутался и не могу решить, какая реализация лучше всего с точки зрения производительности и управления памятью.