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

macOS 10.12中的NSURLSession线程更改?

在 macOS 10.12 中,NSURLSession 的线程更改是指 Apple 在这个操作系统版本中对 NSURLSession 进行了一些线程相关的改进和优化。

NSURLSession 是苹果提供的用于进行网络请求的框架,它可以用于发送 HTTP/HTTPS 请求,并处理服务器响应。在 macOS 10.12 中,NSURLSession 的线程更改主要包括以下几个方面:

  1. 线程安全性:NSURLSession 在 macOS 10.12 中增强了线程安全性,确保在多线程环境下的并发请求能够正确地进行。这意味着开发者可以在多个线程中使用同一个 NSURLSession 实例,而不必担心线程同步的问题。
  2. 后台会话线程:在 macOS 10.12 中,NSURLSession 支持后台会话,允许应用在后台执行网络请求。为了提高后台会话的性能和效率,NSURLSession 在后台会话中使用了独立的线程来处理网络请求和响应。这样可以避免阻塞主线程,提高应用的响应速度。
  3. 线程调度:NSURLSession 在 macOS 10.12 中改进了线程调度机制,以提高网络请求的效率和性能。具体来说,NSURLSession 会根据网络请求的类型和优先级,自动将请求分配到合适的线程中进行处理。这样可以更好地利用系统资源,提高网络请求的并发能力。

NSURLSession 的线程更改在实际开发中具有以下优势和应用场景:

  1. 提高性能:NSURLSession 的线程更改可以提高网络请求的性能和效率,特别是在多线程环境下。开发者可以充分利用多核处理器和系统资源,提高应用的并发能力和响应速度。
  2. 后台执行:NSURLSession 的线程更改使得应用可以在后台执行网络请求,这对于需要长时间执行的任务(如下载、上传)非常有用。开发者可以利用后台会话来执行这些任务,而不必担心阻塞主线程或被系统终止。
  3. 线程安全:NSURLSession 的线程更改增强了线程安全性,简化了多线程编程的复杂性。开发者可以在多个线程中使用同一个 NSURLSession 实例,而不必担心线程同步和竞态条件的问题。

腾讯云提供了一系列与网络通信和云计算相关的产品,可以帮助开发者构建稳定、高效的网络应用。具体针对 NSURLSession 的线程更改,腾讯云没有直接相关的产品,但可以使用腾讯云的云服务器(CVM)和负载均衡(CLB)等基础设施产品来支持和扩展网络应用的部署和运行。

更多关于 NSURLSession 的线程更改的信息,可以参考苹果官方文档:NSURLSession Class Reference

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

NSURLSession 所有的都在这里(一)

----       在这篇文章中把NSURLSession.h文件集体梳理一遍,把里面的每个属性、代理和方法都拿出来说说,通过这篇文章我相信对于NSURLSession这一块东西会梳理比较全面一点...,你掌握了NSURLSession对于iOS网络处理理解就会有点深度了,而不是停留在AF层面,理解了NSURLSession再去看AFNetWorking源码会有很大帮助。 ...,如zh-cn       Accept-Encoding: 客户端支持数据压缩格式,如gzip       User-Agent: 客户端软件环境,我们可以更改该字段为自己客户端名字,比如QQ...接着我们说我们要理解重点--NSURLSession,下面的内容是按照NSURLSession.h API来写,你可以对比着来看。...先看看NSURLSession:       /* NSURLSession 默认是挂起状态,要是需要网络请求需要去开启, 下面这个属性sharedSession就是获取全局NSURLSession

2.1K30

NSURLSession 所有的都在这里(二)

----       这是这个关于NSURLSession第二篇文章,第一篇再加上这篇文章,就大概NSURLSessionAPI以及一些简单使用我们也就说差不多了,这篇文章总结哪些点呢?...API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0)); 告诉委托远程服务器请求HTTP重定向。...当委托URLSession:dataTask:didReceiveResponse:completionHandler:方法决定将数据请求处置更改为下载时,会话将调用此委托方法为你提供新下载任务。...:(NSURLSessionDownloadTask *)downloadTask; 告诉委托数据任务已更改为流任务 当委托URLSession:dataTask:didReceiveResponse...:completionHandler:方法决定将处置从数据请求更改为流时,会话将调用此委托方法为你提供新流任务。

1.8K30

iOS_AFNetworking 结构解析+用例分析+源码阅读

Github OC语言排第一, 其凝聚了众多大神智慧,无论是在技术点上,还是架构设计上、问题处理方式上,都具有很高学习价值。 大致结构如下: NSURLSession 请求会话 1....所有的代理回调都应该在一个串行队列中,这样才能保证代理方法回调顺序 用NSOperationQueue: 设置线程最大并发数为 1实现串行,代理回调:异步+串行队列 2....:对响应进行JSON解析 AFXMLParserResponseSerializer:对响应进行XML解析 AFXMLDocumentResponseSerializer (macOS):MIME类型,.../mo: 字典操作不是线程安全, 所以用`NSLock`加锁 - (AFURLSessionManagerTaskDelegate *)delegateForTask:(NSURLSessionTask.../objectEnumerator/reverseObjectEnumerator(不可更改) //mo: 用`keyEnumerator`遍历keys, 此时不可更改字典 (还有个objectEnumerator

52520

flink线程模型源码分析1之前篇将StreamTask中线程模型更改为基于Mailbox方法

前言 本文中关于将StreamTask中线程模型更改为基于Mailbox方法主要译自如下两处: •https://issues.apache.org/jira/browse/FLINK-12477•...使用mailbox模式,流任务中所有状态更改都将从单个线程(即所谓“mailbox线程”)发生。通过将操作(或至少其状态更改部分)排队到阻塞队列—邮箱,可以模拟并发操作。...事件生成和处理(Event generation and processing) 用例1,即一般事件生成和处理,将通过我们更改而大大简化。邮箱确保所有状态更改都来自单个线程,不再具有互斥性。...原因是,从高层次角度来看,当前source functions就像事件生成“无穷”循环一样工作。这是他们公共API一部分,不能为了向后兼容自定义sources而更改。...然而,如果不使用大量样板代码对代码进行巨大更改,就没有很好方法在Java中模拟这种行为。对潜在定制操作符隐藏Kotlin实现也不容易。 7.

2.7K30

iOS开发·由SDWebImage引发知识点聚合与思考(最新呕心沥血之作)

据我所观察SD涉及到知识点就有:runloopmode切换,runtime关联对象,多线程NSOperation开始与挂起,网络操作里面NSURLSession与NSURLConnection区别...) 1.4 NSURLSession两种形式:Block和代理 1.5 操作及改动NSURLSession下载文件位置 多线程与NSOperation篇 2.1 基于NSURLConnection...但是,后来发现新版本SDWebImage是基于NSURLSession,这个NSURLSession与NSURLConnection最大不同是,它不通过获取当前线程runloop进行控制,而是通过...)会新开一个线程,NSURLConnection也再创建了两个新线程,但是最终网络请求回调(即最终setImage部分)工作在主线程。...基于NSURLSessionSDWebImage通过NSOperation进行管理,虽然也会新开子线程,但最终网络请求回调也工作在主线程

2K40

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

这样看来它使用真的很方便,并且默认会自动开启多线程异步执行,上面栗子回调块中输出了当前线程可以看出并不是主线程,所以在回调中如果要进行UI更新操作需要放到主线程中执行,相比使用NSURLConnection...各种坑,使用NSURLSession更方便并且它是线程安全。...方法,当NSOperation类子类添加进NSOperationQueue队列中线程调度后就会执行上述方法,上面这个方法也比较简单,主要就是判断session是否可用然后决定是否要自行管理一个NSURLSession...,而解码操作默认是放在主线程执行,凡是放在主线程执行任务都务必需要考虑清楚,如果有大量图片要展示,就会在主线程中执行大量解码任务,势必会阻塞主线程造成卡顿,所以SDWebImage自己实现相关编解码操作...,并在子线程中处理,就不会影响主线程相关操作。

2.8K100

AFNetworking 源码阅读(v3.2.1)

// 存储HTTP头信息 self.mutableHTTPRequestHeaders = [NSMutableDictionary dictionary]; // 修改头信息线程...*session))block AF_API_UNAVAILABLE(macos); - (void)setDownloadTaskDidFinishDownloadingBlock:(nullable...首先我们来看一下NSURLSession代理,它有4个代理,在创建时只要设置一个相当于4个都设置了 self.session = [NSURLSession sessionWithConfiguration...,在AF中用了很多GCD函数来保证线程安全 下面函数是用来保证任务创建安全,AF给出解释是在iOS8.0以前,任务创建有线程安全问题,如果你适配8.0以后的话,就不会用它了 static dispatch_queue_t...head信息、Request相关参数设置,请求参数序列化等 根据请求类型创建相关任务NSURLSessionTask,涉及到任务回调,线程安全等 返回数据NSData解析 HTTPS支持 这里只是简单总结这

2.1K20

NSURLConnection被放弃之后使用NSURLSession

username=520&pwd=520&type=JSON"]; //创建 NSURLSession 对象 NSURLSession *session = [NSURLSession sharedSession...NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); //默认在子线程中解析数据...NSUTF8StringEncoding]; //创建会话对象,设置代理 /**   第一个参数:配置信息   第二个参数:设置代理   第三个参数:队列,如果该参数传递nil 那么默认在子线程中执行...response completionHandler:(nonnull void (^)(NSURLSessionResponseDisposition))completionHandler { //子线程中执行...*session = [NSURLSession sharedSession]; //创建会话请求 //优点:该方法内部已经完成了边接收数据边写沙盒操作,解决了内存飙升问题 NSURLSessionDownloadTask

34820

iOS_App性能优化(Energy Efficiency)指南整理

:缓存数据、使用可暂停可恢复传输 检查网络状态:网络不可用时,勿执行请求 提供取消操作 网络可用时,可尝试重试 2、推迟网络请求 批量传输:而不是等待用户点击后再多次请求 酌情创建可延迟网络请求:NSURLSession...不再需要时停止方向更改通知,如:DidLoad时开始、DidDisappear时结束 要求更少连续运动更新:CMMotionManager设置Interval详情见文档 六、优化通知 尽可能使用本地通知...仅discover需要services和characters:discover时指定UUID 订阅修改通知,而不是轮询特征值更改:setNotifiyValue:forCharacteristic...app应该空闲时活动 用户界面反应迟钝or缓慢 主线程大量工作 大量使用动画 大量使视图透明 交换 内存停滞和缓存未命中 内存警告 锁争用 上下文切换过多 过多使用计时器 屏幕上绘制过多 磁盘...Time Profiler:线程执行时间 Blank:自定义模板 Energy Efficiency Guide for iOS Apps

1.3K30

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

POST请求设置 2.2 发送请求 NSURLConnection常见发送请求方法分为同步和异步请求 注意:同步请求和异步请求区别在于是否会阻塞线程,同步请求会阻塞线程等请求完毕以后再执行后面的任务...,异步请求不会阻塞线程,会等后面的任务执行完毕之后回头执行请求,异步请求有开子线程能力,但并不一定会开启子线程 2.2.1 同步请求 ?...请求数据过程也可能非常耗时,我们能否将请求数据操作也放在子线程中进行呢?...答案是可以但是需要注意,initWithRequest会将方法会将NSURLConnection对象加入当前对应RunLoop中,当我们在子线程中进行网络请求,默认子线程RunLoop不会自动创建...,NSURLConnection对象会被释放,因此我们需要开启子线程RunLoop,保证NSURLConnection对象不会被释放。

2.3K80

iOS开发之NSURLProtocol那些坑

class]]; 对于NSURLSession请求,注册NSURLProtocol方式稍有不同,是通过NSURLSessionConfiguration注册 // NSURLSession...NSURLProtocol在拦截NSURLSessionPOST请求时不能获取到Request中HTTPBody,这个貌似早就国外论坛上传开了,但国内好像还鲜有人知,据苹果官方解释是Body是NSData...而且当Body数据为二进制数据时这招也没辙了,因为Header里都是文本数据,另一种方案就是用一个NSDictionary或NSCache保存没有请求Body数据,用URL为key,最后方法就是别用NSURLSession...使用NSURLProtocol时,在那两个类方法可以发送同步网络请求,而实例方法,如startLoading则进入死锁,直至超时,原因是执行实例方法所在线程并没有启动runloop,而NSURLConnection...这些网络请求需要依赖于runloop,因此这些请求根本发不出去,所以必须使用异步请求,NSURLConnection/NSURLSession异步请求线程保证启动了runloop。

2.5K91

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

你要知道NSURLSession都在这里 转载请注明出处 https://cloud.tencent.com/developer/user/1605429 本系列文章主要讲解iOS中网络请求类NSURLSession...实现下载,本文将会讲解SDWebImageDownloader类,来探索SDWebImage如何实现多线程下载多张图片。...经过两篇文章源码讲解,SDWebImage关于图片下载部分也就全部讲解完了,主要使用了自定义NSOperation子类,并在这个自定义NSOperation子类中通过一个可用NSURLSession...来创建一个执行服务器交互数据NSURLSessionDataTask下载任务,并由其全权负责下载工作,接着使用NSOperationQueue实现多线程多图片下载。...源码中值得我们学习地方有很多,比如,在设计第三方库时要设计全面的通知,为了防止竞争条件可以使用一个串行队列或是barrier方法来执行一些可能会产生多线程异常代码,还有很多设计代码细节需要我们自行体会

1.6K50

老司机出品———疯狂造轮子之图片异步下载类

NSURLSession是iOS7推出与NSURLConnection并列网络请求库,并且在iOS9中苹果宣布废弃NSURLConnection,NSURLSession从此正式步入历史舞台,大多数还在维护网络相关三方库都跟随苹果脚步将底层...并且NSURLSession还向我们提供了指定任务回调队列Api,让我们方便选择在主线程或子线程中回调。...且相对于字典来说,NSCache是线程安全,所以你并不需要手动加锁哦。 所以确定了内存缓存实现方式后,我们只要部署缓存逻辑即可。...我们知道,内存读取速度是要大于磁盘读取速度,所以当去缓存时候我们优先取内存缓存使我们主要策略。 另外进行磁盘缓存时候我们还要注意两点,第一点,一定要异步子线程去执行,这样可以避免线程阻塞。...第二点,既然开启了子线程就应该注意线程安全,所以这里应注意加线程安全相关代码。

46740

iOS小技能:UIWebView 被拒解决方案(用更安全WKWebView替代UIWebView)

UIWebView更安全 基于NSURLProtocol实现iOS应用底层所有网络请求拦截(含网页ajax请求拦截【不支持WKWebView】NSURLProtocol 只能拦截 UIURLConnection、NSURLSession...和 UIWebView 中请求; 对于 WKWebView 中发出网络请求也无能为力,如果真的要拦截来自 WKWebView 中请求,还是需要实现 WKWebView 对应 WKNavigationDelegate...UIWebview to WKWebView #4441 #4.x iOS 9 macOS 10.10 watchOS 2.0 tvOS 9.0 Xcode 11+ is required.... 2.1 Installing AFNetworking 4.0.1 (was 3.2.1)正式移除了UIWebView分类 新版本主要移除类如下 处理afn接口问题,老版本post get...formdata请求形式在4.0都有了调整,因此需要更改工程中相应方法 例如 修改为: [manager GET:urlStr parameters:params headers

3K20
领券