Цель-C: выполнение блока или функции в определенном NSThread


NSObject имеет метод -performSelector:onThread:withObject:waitUntilDone:, который позволяет выполнять любой метод на вызывающем объекте в определенном NSThread.

Существует ли подобный и удобный способ выполнения функции или блока в стиле C в конкретном NSThread?

1 3

1 ответ:

API NSThread в основном основан на селекторе. В iOS 10 и macOS 10.12 есть API на основе блоков для инициализации или отсоединения потока, но не для выполнения какой-либо задачи на существующем NSThread. Если вы хотите использовать API на основе блоков, вы обычно используете очереди диспетчеризации или операций,что избавляет вас от необходимости самостоятельно управлять экземплярами NSThread.

Но если вы загуглите "расширение блока NSThread", вы увидите, что существуют простые сторонние API для предоставления блока методы для NSThread. Например, GTMNSThread+блоки.h или NSThread-MCSMAdditions.