• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - URLSession 最佳实践 - 多个请求

[复制链接]
菜鸟教程小白 发表于 2022-12-13 14:30:58 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我需要一些关于 URLSession/NSURLSession 最佳实践的指导。

我的要求规定我必须执行临时/定期 HTTP GET 请求。即每隔几分钟,然后可能每 30 秒,随意更改。

无论如何我已经实现了如下,我有一个包含这样代码的方法:

 let urlRequest = URLRequest(url: url)

        // set up the session
        let config = URLSessionConfiguration.default
        let session = URLSession(configuration: config)
        // make the request
        let task = session.dataTask(with: urlRequest, completionHandler: { (data, response, error) in ...

这使 URLSession 保持在此方法的范围内。

所以有些问题:

1) 这是 正确 实现我正在寻找的方法还是我应该在类级别范围内拥有一个 URLSession 并创建多个“任务”? - 如果是这样,我应该在每个任务上调用 .resume 吗?

2) 如果这是一个可接受的 URLSession 使用范例,我是否会泄漏内存(ARC 不这么认为)?我问,因为我注意到 URLSession 对象似乎停留在我每次调用它/替换它的方法的范围之外。 (我通过对我定期检查的对象的 WEAK 引用进行检查)...

3) 有没有一种更简洁的方法来使用 URLSession 临时获取相同的 URL 请求?我觉得 NSURLConnection 处理得很好,但它已被弃用。



Best Answer-推荐答案


1) 这是实现我正在寻找的东西的正确方法,还是我应该在类级别范围内拥有一个 URLSession 并创建多个“任务”? - 如果是这样,我应该在每个任务上调用 .resume 吗?

回答: 你正在做的事情并没有错,尽管它并不常见。 最佳实践是使用 URLSession 的共享实例。为您发出的每个请求(通常每 30 秒)创建一个新的 session 配置和 URLSession 对象,其性能将低于使用单例。

2) 如果这是一个可接受的 URLSession 使用范例,我是否会泄漏内存(ARC 不这么认为)?我问,因为我注意到 URLSession 对象似乎停留在我每次调用它/替换它的方法的范围之外。 (我通过对我定期检查的对象的 WEAK 引用进行检查)...

回答: 您可能会注意到您的 URLSession 对象超出了您的方法调用范围的原因是您正在向它传递一个转义闭包,并且 session 可能会一直存在,直到调用完成处理程序。

3) 有没有一种更简洁的方法来使用 URLSession 以临时方式获取相同的 URL 请求?我觉得 NSURLConnection 处理得很好,但它已被弃用。

回答:有很多方法可以做到这一点。您可以尝试存储对 URL 或请求的引用,并使用您希望的相同请求调用您的方法。

关于ios - URLSession 最佳实践 - 多个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41600446/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap