在 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(在主线程上运行)
在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(在主线程上运行)