在 dispatch_async 内进行网络调用似乎不起作用?

Making network calls inside of dispatch_async does not seem to work?

dispatch_async内部进行网络调用有什么问题吗?

下面的代码放在 dispatch_async 内部时不会向 Flurry 记录任何内容,但放在函数外部时可以正常工作。

Flurry 文档中没有任何内容表明 dispatch_async 会导致问题。

有人可以解释一下下面的代码有什么问题吗?

func logFlurry(eventName: String, var userData: NSMutableDictionary?) {
    dispatch_async(dispatch_get_main_queue()) {
        if (userData == nil) {
            userData = NSMutableDictionary()
        }
        userData!.setObject(USER.getUsername(), forKey: "Username")
        Flurry.logEvent(eventName, withParameters: userData! as [NSObject : AnyObject])
    }
}

尝试在块外设置 pass 字典的 userData 数据,

if (userData == nil) {
    userData = NSMutableDictionary()
}

userData!.setObject(USER.getUsername(), forKey: "Username")

dispatch_async(dispatch_get_main_queue()) {
    Flurry.logEvent(eventName, withParameters: userData! as [NSObject : AnyObject])
}

网络调用通常放在后台线程上,因为(特别是如果您发出的网络请求会产生巨大的响应)否则网络调用将阻塞UI(在主线程上运行)