Мне нужно написать класс Objcetive-C (тогда объект). Этот объект должен жить в своем потоке, чтобы сделать цикл калькуляции (а затем и все его методы/функции) без влияния на события GUI. есть ли безопасный способ написать такой класс?Objective C Класс/объект в собственной теме
0
A
ответ
0
Apple использует GCD (Grand Central Dispatch) для обработки потоков в iOS. В вашем случае dispatch_get_global_queue
может быть правильной операцией GCD для вашего прецедента. Пример (приведенный от here):
dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(backgroundQueue, ^{
while ([self shouldKeepProcessingInBackground]) {
[self doBackgroundWork];
usleep(1e4);
}
})
+3
Нить никогда не должна запускать цикл все время. Он ест батарею и процессор. Вместо этого блокируйте какой-то механизм сигнализации (из которых GCD предоставляет несколько). – bbum
используйте для этого центральную центральную диспетчерскую службу. возможно, это поможет вам: http://jeffreysambells.com/2013/03/01/asynchronous-operations-in-ios-with-grand-central-dispatch – bopa
Вы также должны различать, должен ли ваш объект «жить в своей собственной теме», или что вы действительно хотите, так это то, что вычисление выполняется в собственном потоке. Кроме того, где вы ожидаете результата? В объекте? Или будет блок завершения, чтобы облегчить это? –