Я портирую код с C ++ на Swift, который использовал Grand Central Dispatch, и обнаружил любопытную ошибку: dispatch_queue_create, по-видимому, вообще не работает.
Например, в заголовке базового класса C ++ я бы объявил
dispatch_queue_t m_WorkQ;
и в инициализаторе поместите
m_ResultQ = dispatch_queue_create("com.myapp.mHitsUpdateQueue", 0);
... и все было великолепно.
Я пробовал это в Swift в своем классе, объявив это на уровне класса:
var resultQueue: dispatch_queue_t
... и в инициализаторе у меня (среди прочего) есть строка
resultQueue = dispatch_queue_create("com.myapp.mHitsUpdateQueue", 0)
... и он компилируется и запускается нормально, но дает мне немедленную ошибку времени выполнения EXC_BAD_ACCESS (code = 1, address = 0x37) в приведенной выше строке
Чтобы определить, сделал ли я что-нибудь еще, я создал приложение-инструмент командной строки, состоящее только из следующего кода:
import Foundation
var thisQueue = dispatch_queue_create("com.myApp.mHitsUpdateQueue", 0)
println(thisQueue.description)
... и, конечно же, я получаю указанную выше ошибку прямо в строке назначения thisQueue. Так что я почти уверен, что в создании очередей Swift и GCD есть что-то действительно очевидное, чего мне не хватает.
Может ли кто-нибудь помочь мне здесь?