从另一个GCD队列中捕获NSNotification

时间:2016-02-09 09:19:33

标签: swift cocoa grand-central-dispatch nsnotifications

我正在使用以下代码运行后台进程:

func launchTor(hashedPassword hash : String) {
    dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)) {
    // Do some stuff here
    let observer = NSNotificationCenter.defaultCenter().addObserverForName("AppTerminates", object: nil, queue: nil) {
            notification -> Void in
            print("Terminating...")
            // Do smh here
        }
    }
    // Just some more stuff
}

有没有办法指定需要捕获通知的队列(GCD)?

1 个答案:

答案 0 :(得分:1)

- addObserverForName:object:queue:usingBlock:方法是NSOperationQueue类提供的额外功能,基于 Grand Central Dispatcher:

  

操作队列使用libdispatch库(也称为Grand Central Dispatch)来启动其操作的执行。

(从NSOperationQueue类引用的开头)

如果有原因(例如不同的行为或教育目的),可以重新实施此功能,否则可能需要切换到NSOperationQueue而不是裸GCD。