gpt4 book ai didi

ios - WatchOS 2.2 的 NSURLSession 非常慢

转载 作者:可可西里 更新时间:2023-11-01 06:03:29 25 4
gpt4 key购买 nike

我尝试在 WatchOS 2.2 应用程序中使用 NSURLSession 从 Web 服务器下载一些 JSON 数据。在 iPhone 本身上完美运行的相同代码,在 watch 上永远运行(使用模拟器)。

我检查了这个例子:https://github.com/shu223/watchOS-2-Sampler ,它有一个通过NSURLSession下载和显示图像的功能,它有同样的问题。

这个例子的代码是:

    let url = NSURL(string:"https://pbs.twimg.com/profile_images/3186881240/fa714ece16d0fabccf903cec863b1949_400x400.png")!
let conf = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: conf)
task = session.dataTaskWithURL(url) { (data, res, error) -> Void in
if let e = error {
print("dataTaskWithURL fail: \(e.debugDescription)")
return
}
if let d = data {
let image = UIImage(data: d)
dispatch_async(dispatch_get_main_queue(), { () -> Void in
if self.isActive {
self.image.setImage(image)
}
})
}
}
task!.resume()

玩弄它,我发现如果我将代码更改为

    let session = NSURLSession.sharedSession()

它工作正常。

但是,我不能在我的应用程序中使用它,因为我需要设置委托(delegate)。

我该怎么做才能让它发挥作用?

最佳答案

我在 watchOS3 中仍然遇到同样的问题。网络请求慢。特别是watch app刚安装的时候,第一次网络请求通常很慢。它最多可能需要 30 秒和超时,但在 iOS 中会立即发生。

但我发现通过使用 iOS 应用程序发出网络请求并将其发送到 watch 应用程序,效果立竿见影。

我在 watchOS 中使用 WCSession sendMessage:replyHandler:errorHandler 来通知 iOS 应用程序发出特定的网络请求。然后我通过 session:didReceiveMessage:replyHandler 中的 replyHandler 发回来自网络请求的响应。只有短暂的滞后。

作为回退,每当 sendMessage 失败时,我都会通过 watch 应用程序发出相同的请求,因此如果 iPhone 不在附近,它应该仍然可以工作。

关于ios - WatchOS 2.2 的 NSURLSession 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36240836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com