Как объявить `dispatch_function_t` для `dispatch_async_f` в Swift?

Xcode 7 beta 5. Я пытаюсь использовать dispatch_async_f, чтобы избежать блокировки.

func myFirstFunc() {
    let identifier = QOS_CLASS_BACKGROUND
    let queue = dispatch_get_global_queue(identifier, 0)
    let context: UnsafeMutablePointer<Void> = nil
    let work: dispatch_function_t = myOtherFunc
    dispatch_async_f(queue, context, work)
}
func myOtherFunc(context: UnsafeMutablePointer<Void>) {
}

Получил ошибку:

Указатель функции C может быть сформирован только из ссылки на «func» или литеральное замыкание.


person Cœur    schedule 11.08.2015    source источник
comment
Очевидно, вы могли бы просто использовать блок для вызова myFirstFunc, например. dispatch_async(queue) { self.myOtherFunc() }.   -  person Rob    schedule 11.08.2015
comment
Я думал, что смогу легко избежать блокировки. Видимо это не так просто.   -  person Cœur    schedule 11.08.2015


Ответы (1)


Похоже, myOtherFunc — это метод класса, верно? Это будет работать, только если myOtherFunc объявлена ​​как свободная функция на верхнем уровне.

person Nate Cook    schedule 11.08.2015
comment
О, нельзя использовать методы класса? Так грустно. Тогда я думаю, что лучше использовать блок, если я хочу фоновое использование self. - person Cœur; 11.08.2015