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