IOS基础NSOperation的操作优先级和操作依赖

  • 操作优先级
//  ViewController.m
//  34-操作优先级
//  Created by 鲁军 on 2021/3/9.
#import "ViewController.h"
@interface ViewController ()
//全局队列
@property(nonatomic,strong)NSOperationQueue *queue;
@end
@implementation ViewController
-(NSOperationQueue *)queue{if(_queue==nil){_queue = [[NSOperationQueue alloc] init];//设置最大并发数  (并不是线程数字)//_queue.maxConcurrentOperationCount = 2;}return _queue;
}
- (void)viewDidLoad {[super viewDidLoad];//操作1NSBlockOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{for(int i=0;i<20;i++){NSLog(@"op1 = %d",i);}}];//设置优先级最高op1.qualityOfService = NSQualityOfServiceUserInteractive;[self.queue addOperation:op1];[op1 setCompletionBlock:^{//执行在子线程上的NSLog(@"===========op1 操作完成执行的=========%@",[NSThread currentThread]);}];//操作2NSBlockOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{for(int i=0;i<20;i++){NSLog(@"op2 = %d",i);}}];//设置优先级最低op2.qualityOfService = NSQualityOfServiceBackground;[self.queue addOperation:op2];
}
@end
  • 操作依赖
//
//  ViewController.m
//  35-操作依赖
//
//  Created by 鲁军 on 2021/3/9.
//#import "ViewController.h"@interface ViewController ()
//全局队列
@property(nonatomic,strong)NSOperationQueue *queue;
@end
@implementation ViewController
-(NSOperationQueue *)queue{if(_queue==nil){_queue = [[NSOperationQueue alloc] init];//设置最大并发数  (并不是线程数字)//_queue.maxConcurrentOperationCount = 2;}return _queue;
}
- (void)viewDidLoad {[super viewDidLoad];//下载 解压  升级完成NSBlockOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{NSLog(@"下载");}];NSBlockOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{[NSThread sleepForTimeInterval:2.0];NSLog(@"解压");}];NSBlockOperation *op3 = [NSBlockOperation blockOperationWithBlock:^{NSLog(@"升级完成");}];//设置操作间的依赖[op2 addDependency:op1];[op3 addDependency:op2];//会发生循环依赖  ,什么都不操作//操作添加到队列中[self.queue addOperations:@[op1,op2] waitUntilFinished:NO];//依赖关系可以跨队列[[NSOperationQueue mainQueue] addOperation:op3];
}@end

IOS基础NSOperation的操作优先级和操作依赖相关推荐

  1. ios基础篇(十四)—— 操作依赖、操作缓存池

    一.NSOperation VS GCD GCD GCD是iOS4.0 推出的,主要针对多核cpu做了优化,是C语言的技术 GCD是将任务(block)添加到队列(串行/并行/全局/主队列),并且以同 ...

  2. iOS基础问答面试题连载-附答案

    2017-02-02 timhbw CocoaChina 以下是一些自己收集的比较基础的问题(大神可以忽略),附上答案,方便大家阅读.俗话说得好,基础不牢,地动山摇.文章末尾会提供PDF版的文档,方便 ...

  3. iOS学习之iOS沙盒(sandbox)机制和文件操作(二)

    接上篇 iOS学习之iOS沙盒(sandbox)机制和文件操作(一) 我们看看如何获取应用程序沙盒目录.包括真机的沙盒的目录. 1.获取程序的Home目录 [cpp] view plaincopy N ...

  4. 大数据基础系列 5:Hadoop 实验——熟悉常用的 HDFS 目录操作和文件操作

    文章目录 前言 一.实验目的 二.实验平台 三.实验内容和要求 3.1.HDFS 目录操作 3.1.1.创建用户目录 3.1.2.显示 HDFS 中与当前用户对应的目录内容 3.1.3.列出 HDFS ...

  5. python 新建文件 hdfs_python基础操作以及hdfs操作

    一.前言 作为一个全栈工程师,必须要熟练掌握各种语言...HelloWorld.最近就被"逼着"走向了python开发之路,大体实现的功能是写一个通用类库将服务器本地存储的文件进行 ...

  6. Android游戏开发基础part4--Bitmap位图的渲染与操作

    游戏开发基础part4--Bitmap位图的渲染与操作 知识点1:Bitmap与BitmapFactory 如果想通过一张图片资源文件创建一个位图,则要通过位图工厂来索引图片资源文件,从而生成一张位图 ...

  7. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  8. DNS 基础知识及 Linux DNS 服务器操作知识

    一.DNS域名结构与域名服务器 域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址.域名系统其实就是名字系统.为什么不叫&quo ...

  9. 数字化方法基础(四)_矩阵操作

    数字化方法基础(四)_矩阵操作 Chapter 7 矩阵操作 利用矩阵实现向量平移 使用矩阵实现向量旋转 如何让图形既平移又旋转 坐标系的旋转 让图形显示在屏幕中心且绕中心转动 全部教程链接: htt ...

最新文章

  1. 通过regedt查看计算机密码,win10系统通过注册表设置定时更换密码提醒的处理步骤...
  2. 部署tomcat环境
  3. [转]CSS3 transform顺序问题
  4. Zabbix监控华为交换机CPU、温度并显示到拓扑图
  5. php发表图片文章代码,最新PHP图片上传的一个例子的文章【延伸阅读】
  6. 【NLP】NLP提效,除了选择合适的模型,就是数据增强了
  7. 论文浅尝 | 将结构预测作为增广自然语言间的翻译任务
  8. 易语言源代码毁来者来了!!
  9. PyQt5笔记(05) -- 绝对位置
  10. java c语言 实现des算法_C语言实现DES算法
  11. 二级VB培训笔记05:文件操作
  12. VS2010中的顺序图
  13. 五大服务顺序_百度大脑5.0技术干货:详解飞桨五大优势,鸿鹄芯片架构细节
  14. HTML - 'MARQUEE'
  15. 代码评审 16.7.1
  16. VirtualBox添加USB 3.0控制器扩展
  17. Java简繁体汉字转化
  18. javascript 中时区知识的整理 UTC GMT
  19. spring boot 配置文件properties,yml语法学习及属性获取@ConfigurationProperties和@Value
  20. 聚焦Java性能优化 打造亿级流量秒杀系统【学习笔记】09_防刷限流技术

热门文章

  1. java epoll select_最新阿里、拼多多、快手Java岗面试题269 道送答案
  2. 三菱plc编程实例3000_三菱入门PLC编程PLC系统程序包括哪些
  3. 10G_Ethernet_04 10G Ethernet Subsystem IP 的快速验证(万兆以太网IP的快速验证)
  4. 计算机基础与组装,1.计算机基础与组装.pptx
  5. java实现简易聊天窗口先运行服务器还是客户端_一个简易聊天功能的服务器端和客户端源码...
  6. unity添加对象实例_【Unity】6.3 通过 C# 脚本创建和访问游戏对象
  7. 电路基本概念有哪些?
  8. pdf导入ps颜色太浅_PDF 文件编辑转换难?或许你需要一个扫描全能王!
  9. java+分支合并主线_git如何合并两个远端分支?
  10. 看《长安十二时辰》可以了解哪些算法知识