美文网首页专注iOS开发的小渣渣
关于 NSOperation 其他细节问题

关于 NSOperation 其他细节问题

作者: 蜗蜗牛在奔跑 | 来源:发表于2019-12-02 14:37 被阅读0次

dependencies:

我们可以在 operation 间添加依赖关系,在某个 operation 所依赖的 operations 完成之前,其一直处于未就绪状态(isReady 为 NO)。

需要注意的是,依赖关系是 operation 自身的状态,也就是说有依赖关系的 operations 可以处在不同的 NSOperationQueue 中。

isReady:

isReady 默认实现主要处理 operation 间的依赖关系,当我们自定义该方法时需要考虑 super 的值,如 AFURLConnectionOperation中关于 isReady 的实现:

qualityOfService:

用于表示 operation 在获取系统资源时的优先级,默认值:NSQualityOfServiceBackground,我们可以根据需要给 operation 赋不同的优化级,如最高优化级:NSQualityOfServiceUserInteractive。

queuePriority:

用于设置 operation 在 operation queue 中的相对优化级,同一 queue 中优化级高的 operation(isReady 为 YES) 会被优先执行。需要注意区分qualityOfService(在系统层面,operation 与其他线程获取资源的优先级)与queuePriority(同一 queue 中 operation 间执行的优化级)的区别。

同时,需要注意dependencies(严格控制执行顺序)与queuePriority(queue 内部相对优先级)的区别。

NSOperation Queue

NSOperation Queue 用于管理、执行 NSOperation,无论其中的 operation 是并行还是串行,queue 都会在子线程(借用 GCD)中执行 operation。

从上小节我们知道,实现异步 operation 比同步 operation 要复杂许多,因此如果打算将 operation 加入 queue 中,则完全可以将 operation 实现为同步方式。

对于 queue 中已就绪的 operation,queue 会选择 queuePriority 值最大的 operation 执行。

关于 NSOperation Queue 有两点需要强调:

cancelAllOperations:用于取消队列中的 operations,对 queue 中所有 operations 调用 cancel方法。(对 operation 调用 cancel 方法后的效果完全由 operation 自己决定。cancel 唯一能影响的就是清除 operation 的依赖关系,使其立即可以被执行)。此时 queue 并不会 remove 其中的 operations,remove 操作仅发生在 operation 完成时。

suspended:将该属性置为 YES,会阻止 queue 执行新的 operation,但已经在执行中的 operation 不受此影响。

相关文章

  • 关于 NSOperation 其他细节问题

    dependencies: 我们可以在 operation 间添加依赖关系,在某个 operation 所依赖的 ...

  • Netty框架之ChannelPipeline

    本文主要记录下本人看Netty源码中关于ChannelPipeline的细节问题,为原创内容,如有文中有书写或其他...

  • iOS-NSoperation

    技 术 文 章 / 超 人 苹果官方关于NSOperation的介绍 NSOperation介绍NSOperati...

  • 2018-03-27

    关于细节的问题讨论

  • 关于NSOperation

    多线程的其中一种方法,这个用得相对比较少,之前看到一个问题是说,如果同时执行10个网络请求,全部执行完毕之后...

  • NSOperation与网络封装(上)

    关于NSOperation 基于GCD,NSOperation是一个基于GCD封装的类。 Command,通过NS...

  • iOS 重学之路--多线程(二)

    这篇文章主要是对NSOperation的,其他多线程方式请点击这里 完整demo,请看这里 NSOperation...

  • 关于细节的问题

    关于细节的问题 文/所以 生活的磨盘很重, 你以为它是在将你碾碎, 其实他是在教会你细腻 呈上生活的细节 避免你太...

  • iOS基础-- GCD基础总结

    关于多线程(NSThread、NSOperation、NSOperationQueue)基础总结, 参考文章 回顾...

  • 关于细节的讨论

    关于设计细节的讨论 1、一个事情能够讲得彻底清楚,证明所有的问题也就解决了 2关于细节设计,首先,细节是两个概念:...

网友评论

    本文标题:关于 NSOperation 其他细节问题

    本文链接:https://www.haomeiwen.com/subject/ujzuzttx.html