首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS开发之网络代码进化史

兼容性好,适用于所有 iOS 版本。 缺点 可能导致"回调地狱"。 错误处理比较分散,每个回调都需要单独处理错误。 取消操作比较麻烦。...Completion回调+Result 对传统 Completion 回调的改进,使用 Swift 的 Result 类型统一处理成功和失败情况。...Combine框架 Combine 是 Apple 在 iOS 13 引入的响应式编程框架,专为处理异步事件流设计。...强大的操作符支持。 优雅的错误处理和转换机制。 提供标准的取消机制。 缺点 学习曲线较陡峭。 仅支持 iOS 13 及以上版本。 长链式调用可能影响代码可读性。 4....易于理解的错误处理。 内置取消支持和结构化并发。 易于调试和维护。 缺点 一定的学习曲线。 需要 iOS 15 及以上版本。

3010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    NSURLSession 所有的都在这里(一)

    获取网络请求的服务类型 枚举如下 */ @property (readonly) NSURLRequestNetworkServiceType networkServiceType API_AVAILABLE...获取是否允许使用服务商蜂窝网络 */ @property (readonly) BOOL allowsCellularAccess API_AVAILABLE(macos(10.8), ios(6.0...这个方法是任务完成之后调用会释放session 这里涉及到的是session和代理之间相互的强引用可能会造成内存泄漏的问题,了解一下!...@property (readonly) NSURLSessionTaskState state; 错误 * The error, if any, delivered via -URLSession...读取minBytes或最多maxBytes字节,并在会话委托队列中调用数据或错误的完成处理程序。如果发生错误,任何未完成的读取也将失败,并且新的读取请求将立即出错。

    2.2K30

    iOS网络编程之二——NSURLSession的简单使用

    iOS网络编程之二——NSURLSession的简单使用 一、NSURLSession简介     在iOS7之后,NSURLSession作为系统推荐使用的HTTP请求框架,在进行前台请求的情况下,...Ephemeral类型:即时的请求类型,不使用缓存,身份凭证等。         Background:后台类型,支持在后台完成请求任务。         ...2.NSURLSession任务的类型         在NSURLSession中添加的请求任务支持3中类型:         数据任务:使用NSData对象进行数据的发送和获取,一般用于短数据的任务...下载任务:从文件下载数据,支持后台下载。         上传任务:以文件的形式上传数据,支持后台上传。...        NSURLSession有两种方式进行网络数据的请求,一种是通过block的方式获取网络数据,一种是通过代理回调的方式获取网络数据。

    1K20

    iOS14开发-网络

    响应状态码 状态码 描述 含义 200 Ok 请求成功 400 Bad Request 客户端请求的语法出现错误,服务端无法解析 404 Not Found 服务端无法根据客户端的请求找到对应的资源 500...JSON 数据的 value 类型: 数字(整数或浮点数) 字符串("表示) 布尔值(true 或 false) 数组([]表示) 对象({}表示) null 解析 厘清当前 JSON 数据的层级关系...明确每个 key 对应的 value 值的类型。 解析技术 Codable 协议(推荐)。 JSONSerialization。 第三方框架。...: @escaping (URLSession.ResponseDisposition) -> Void) { // 允许接收服务器的数据,默认情况下请求之后不接收服务器的数据即不会调用后面获取数据的代理方法...completionHandler(URLSession.ResponseDisposition.allow) } // 获取数据 // 根据请求的数据量该方法可能会调用多次

    2.4K30

    Alamofire-URLSession必备技能

    lamofire是一个为iOS和macOS打造的并基于Swift的网络库.它在Apple的基础网络架构上提供了更加优雅的接口来简化繁重而常用的网络请求任务。...Alamofire的优雅之处在于它完完全全是由Swift写成的,并且没有从它的Objective-C版本-AFNetworking那继承任何特性。...使用共享会话仅用几行代码将URL的内容获取到内存中。 dataTask创建一个网络会话数据任务。 resume默认网络任务是挂起的,调用执行开始连接请求网络:三次握手......:指定多路径TCP使用的服务类型的常量 9....NSURLRequestCachePolicy NSURLRequestUseProtocolCachePolicy = 0,: 默认缓存策略 如果一个NSCachedURLResponse对于请求并不存在数据将会从源端获取

    2.1K20

    AFNetworking 源码阅读(v3.2.1)

    、Watch、MAC三中,这里简化为iOS) NSString *userAgent = [NSString stringWithFormat:@"%@/%@ (%@; iOS %@; Scale...主要处理错误码、错误信息、解析返回的NSData等 AFHTTPSessionManager:请求管理类,它继承自AFURLSessionManager,它主要封装了GET,POST,PUT,DELETE...3种data(数据)、upload(上传)、download(下载),它们的实现都很相似,这里从data来分析,下面是构建NSURLSessionDataTask的实现代码 - (NSURLSessionDataTask...delegate,再用delegate调用相关代理方法,然后再在代理方法中回调相关的block,具体实现如下 在NSURLSessionDataDelegate回调时,下面是获取数据完成的代理 - (...相关参数设置,请求参数序列化等 根据请求类型创建相关的任务NSURLSessionTask,涉及到任务回调,线程安全等 返回数据NSData的解析 HTTPS的支持 这里只是简单的总结这4步,但是每一步的实现都不易

    2.1K20

    关于 iOS 10 中 ATS 的问题

    从 2017 年 1 月 1 日起,所有的新提交 app 默认是不允许使用NSAllowsArbitraryLoads来绕过 ATS 限制的,也就是说,我们最好保证 app 的所有网络请求都是 HTTPS...默认情况下你的 app 可以访问加密足够强 (TLSv1.2 以上,AES-128 和 SHA-2 以及 ECDHC 等) 的 HTTPS 内容。...ATS 设定使用的组件iOS 9 HTTPiOS 10 HTTP备注 NSAllowsArbitraryLoads: NOUIWebView❌❌ WKWebView❌❌默认行为 URLSession❌❌...✅❌NSAllowsArbitraryLoadsInWebContent 存在时忽略 NSAllowsArbitraryLoads 的设置 URLSession✅❌iOS 9 将继续使用 NSAllowsArbitraryLoads...✅✅NSAllowsArbitraryLoadsInWebContent 存在时忽略 NSAllowsArbitraryLoads 的设置 URLSession✅❌iOS 9 将继续使用 NSAllowsArbitraryLoads

    2.2K20

    iOS网络——AFNetworking AFURLSessionManager源码解析

    的resume和suspend方法的实现,因为iOS7和iOS8中NSURLSessionTask的父类不同,需要做一些处理,关于method-swizzling技术有兴趣的读者可以阅读iOS runtime...探究(四): 从runtiem开始实践Category添加属性与黑魔法method swizzling 接下来看一下AFURLSessionManager类的实现部分。...从字典中取值,这个唯一标识是在创建task的时候NSURLSessionTask为其设置的,不需要手动设置,保证唯一性 AFURLSessionManagerTaskDelegate *delegate...//根据keyPath获取不同类型任务的集合 - (NSArray *)tasksForKeyPath:(NSString *)keyPath { __block NSArray *tasks...,都是调用上述方法来获取对应类型的任务集合 - (NSArray *)tasks { return [self tasksForKeyPath:NSStringFromSelector(_cmd

    4.4K70

    iOS-网络编程(二)文件上传和断点离线下载

    一. iOS中发送HTTP请求的方案 在iOS中,我们常用发送HTTP请求的方案有 苹果原生(自带) NSURLConnection:用法简单,最古老最经典最直接的一种方案 (iOS 9.0弃用)...实现代码 // 注意:获取总文件大小 这个获取的是每次返回数据时的数据大小,但是当我们暂停,在重新开始下载的时候,返回的就是剩余数据文件的大小,因此在当我们计算进度的时候就不准确了 // 所以我们需要当再次回到这个方法的时候...didReceiveResponse接受到服务器响应的时候创建,然后用属性强引用,不必再每次返回数据的时候重新创建。...NSURLSesscion使用步骤 使用NSURLSession对象创建Task 执行Task Task的类型 ? Task的类型 2....// tmp文件保存应用运行时所需的临时数据,使用完毕后会将相应的文件从该目录中删除,应用程序关闭时,系统会清除该目录下的文件 // 程序下载完成之后我们可以将tmp中下载的文件移动到沙盒中保存。

    2.4K80

    老司机 iOS 周报 #79 | 2019-08-12

    阅读原文获取更佳体验~ 老司机 iOS 周报,只为你呈现有价值的信息。 你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。...本文从原理出发,介绍了抖音 iOS 客户端团队是如何通过静态扫描和运行时 trace 找到启动时调用的函数,然后修改编译参数完成二进制文件的重新排布。...脚本,自动获取和解析断点调试的入参信息并打开 WTF Auto Layout?...() 函数获取)收集起来。...当应用 CPU 占用达到阈值时,耗电监控将收集到的堆栈组合(接合成调用树,并标记每个函数被收集的次数)形成耗电堆栈(函数次数越大,所占用 CPU 越多)。 代码 ?

    1K30

    iOS网络——SDWebImage SDImageDownloader源码解析你要知道的NSURLSession都在这里

    你要知道的NSURLSession都在这里 转载请注明出处 https://cloud.tencent.com/developer/user/1605429 本系列文章主要讲解iOS中网络请求类NSURLSession...iOS网络——NSURLSession详解及SDWebImage源码解析 iOS网络——SDWebImage SDImageDownloader源码解析 iOS网络——AFNetworking AFURLSessionManager...SDWebImageDownloaderHeadersFilterBlock)(NSURL * _Nullable url, SDHTTPHeadersDictionary * _Nullable headers); 上面就是一些枚举、变量、自定义类型的声明...*> *URLOperations; //类型的字典,存储http首部 @property (strong, nonatomic, nullable) SDHTTPHeadersMutableDictionary...,可以避免竞争条件的产生 dispatch_barrier_async(self.barrierQueue, ^{ //通过token的url获取到这个Operation

    1.6K50

    iOS 面试策略之系统框架-网络、推送与数据处理

    计算机理论 1.谈谈 HTTP 中 GET 与 POST 的区别 关键词:#方向 #类型 #参数位置 从方向上来看,GET 是从服务器端获取信息,POST 是向服务器端发送信息。...从类型上来看,GET 处理静态和动态内容,POST 只处理动态内容。...它是 URLSessionTask 的具体实现。一般用于从服务器端获取数据,并存放在内存中。 URLSessionUploadTask 负责 HTTP Post/Put 请求。...应该返回错误信息以方便日后调试,而不是应该 return 用 URLSession 的单例不妥。这样每次请求创建一个 dataTask 是一种浪费,同时短时间内多次请求会不必要的造成服务器压力。...iOS 开发中有以下几种方案: plist。它是一个 XML 文件,会将某些固定类型的数据存放于其中,读写分别通过 contentsOfFile 和 writeToFile 来完成。

    1.9K00

    网络杂谈

    而之所以进行这个封装,就是因为请求网址字符串中包括协议类型、服务器地址、端口号、资源层级、文件名等等(这些项目是按照一定的规则组合在一起的),我们要在字符串中获取到其中某一项,那就要自己写一个正则表达式来获取到...如果在网址字符串中,我要找到服务器地址或者是端口号或者是协议类型,那么我就要写大量的正则表达式来进行匹配。...一个NSURL实际上就代表了一个网络请求的地址,而一个Http请求,除了包含网络请求的地址,还需要包含请求方法、协议版本、编码类型等信息,而这些信息是简简单单的一个NSURL所携带不了的,所以需要对NSURL...那么我们该如何获取到网络请求的返回数据呢?如下图: ?...就会根据Podfile的内容去下载相关第三方框架的代码,然后将这些下载好的代码组合生成一个名为Pods的project; 第四步,将Pods project和MyProject 组合,自动生成一个workspace

    62010
    领券