2016-09-28 6 views
1

У меня есть следующий код, который я пытался перевести в swift 3 из swift 2. Вот что я до сих пор.Swift От 2 до 3 Миграция dispatch_get_global_queue

DispatchQueue.async(group: DispatchQueue.global(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),execute: { 
      self.controllerDelegate?.codeToRun(progressWindowViewController: self) 
     }) 

Я получаю сообщение об ошибке: Не удается вызвать «глобальный» со списком аргументов типа (Int, Int). Я знаю, что глобальная очередь нуждается в этом, хотя если бы они не изменили ее в быстрой 3? Каков правильный способ делать глобальные очереди в Swift 3?

Предыдущая Swift 2 Equivlent

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),{ 
      self.controllerDelegate?.codeToRun(self) 
     }) 
+0

Также здесь: http://stackoverflow.com/questions/37805885/how-to-create-dispatch-queue- в-3-скор. –

ответ

8

Попробуйте это будет работать.

DispatchQueue.global(qos: .background).async { 

    DispatchQueue.main.async { 

    } 
}) 

Если вы по-прежнему нуждаетесь в какой-либо помощи, не стесняйтесь спрашивать здесь.

+0

Спасибо, что именно я искал. Я предполагаю, что они сделали какой-то новый класс qos: class, чтобы описать различные типы потоков. –

+0

always Добро пожаловать, чувак. – JAck

+0

мой предыдущий код начался с async из основной темы, надеюсь, что это не проблема. Мне придется поиграть с ним. Будет ли этот код работать и наоборот? Как начать с DispatchQueue.main.async? –

2

На самом деле, все ближе и простой подход к вашему вопросу будет:

DispatchQueue.global(qos: .default).async { ... }

+0

Из любопытства, что делает этот ответ быстрее, может изменить, какой ответ принят –

+0

@JosephAstrahan это не быстрее, но определенно ближе к тому, что вы предлагаете, имея единый блок завершения вместо 2. В любом случае выбранный ответ также является правильным. –