首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏浮躁的喧嚣

    block与GCD--43:NSOperation 与NSOperationQueue

    NSOperation的子类 NSInvocationOperation NSBlockOperation 自定义子类继承NSOperation,实现内部相应的方法 关于NSInvocationOperation NSInvocationOperation *op1 = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector (run1) object:nil]; NSInvocationOperation *op2 = [[NSInvocationOperation alloc]initWithTarget:self NSInvocationOperation *op1 = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector (run1) object:nil]; NSInvocationOperation *op2 = [[NSInvocationOperation alloc]initWithTarget:self

    38710编辑于 2023-11-22
  • 来自专栏iOS 开发杂谈

    iOS多线程之四:NSOperation的使用

    NSOperation是一个抽象类,它不能直接使用,所以你必须使用NSOperation子类,使用最多的是它的两个子类:NSInvocationOperation和NSBlockOperation,但你也可以继承 2、NSInvocationOperation:使用这个类来初始化一个操作,它包括指定对象的调用selector。 ? [operation isConcurrent]; 二、NSInvocationOperation 使用这个类来初始化一个操作,它包括指定对象的调用selector。 ? Paste_Image.png ps: 使用NSInvocationOperation开启一个任务默认是在主线程中执行,只有添加到队列中才会开启新的线程。 四、自定义NSOperation 如果NSInvocationOperation和NSBlockOperation对象不能满足需求,可以自定义NSOperation,添加我们想要的功能。

    1.3K30发布于 2018-09-11
  • 来自专栏iOS开发~

    iOS_多线程三:NSOperation的使用

    目录 一、NSInvocationOperation 二、NSBlockOperation 三、NSOperationQueue NSOperation 是一个抽象类,线程安全,不需要添加额外的锁 使用其子类 :NSInvocationOperation 和 NSBlockOperation 1、NSInvocationOperation 一个对象,表示一个任务 默认在主线程中同步顺序执行,想要并行异步,需要搭配 NSBlockOperation 一个对象,可以创建多个任务 blockOperationWithBlock 添加的任务默认在主线程中 addExecutionBlock 添加任务,会开启多个线程,并发执行 一、NSInvocationOperation 一个 NSInvocationOperation 对象表示一个任务,需要手动调用 start 开启。 NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector

    70610编辑于 2022-07-20
  • 来自专栏一“技”之长

    iOS多线程编程之二——NSOperation与NSOperationQueue

    这个类是一个抽象类,通常情况下,我们会使用NSInvocationOperation和NSBlockOperation这两个子类进行多线程的开发,当然我们也可以写继承于NSOperation的类,封装我们自己的操作类 3、使用NSInvocationOperation调用方法 根据选择器创建一个对象 - (instancetype)initWithTarget:(id)target selector:(SEL)sel NSInvocationOperation * operation = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector NSOperationQueue * queue = [[NSOperationQueue alloc]init];     NSInvocationOperation * op1 = [[NSInvocationOperation

    49020发布于 2018-08-16
  • 来自专栏iOS开发干货分享

    iOS多线程:『NSOperation、NSOperationQueue』详尽总结

    使用子类 NSInvocationOperation /** * 使用子类 NSInvocationOperation */ - (void)useInvocationOperation { // 1.创建 NSInvocationOperation 对象 NSInvocationOperation *op = [[NSInvocationOperation alloc] initWithTarget 注意:和上边 NSInvocationOperation 使用一样。因为代码是在主线程中调用的,所以打印结果为主线程。如果在其他线程中执行操作,则打印结果为其他线程。 创建操作1 NSInvocationOperation *op1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@ selector(task1) object:nil]; // 使用 NSInvocationOperation 创建操作2 NSInvocationOperation *op2 =

    1.5K60发布于 2019-06-14
  • 来自专栏程序员充电站(itcharge)

    iOS多线程:『NSOperation、NSOperationQueue』详尽总结

    在 NSOperation 中,我们使用 NSOperation 子类 NSInvocationOperation、NSBlockOperation,或者自定义子类来封装操作。 4.1.1 使用子类 NSInvocationOperation /** * 使用子类 NSInvocationOperation */ - (void)useInvocationOperation { // 1.创建 NSInvocationOperation 对象 NSInvocationOperation *op = [[NSInvocationOperation alloc 创建操作1 NSInvocationOperation *op1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@ selector(task1) object:nil]; // 使用 NSInvocationOperation 创建操作2 NSInvocationOperation *op2 =

    1.2K80发布于 2018-05-31
  • 来自专栏ShaoYL

    iOS--多线程之NSOperation

    封装的操作放到⼀条新线程中执⾏ ②.NSOperation的子类 NSOperation是个抽象类,并不具备封装操作的能力,必须使⽤它的子类 使用NSOperation⼦类的方式有3种: (1)NSInvocationOperation (2)NSBlockOperation (3)自定义子类继承NSOperation,实现内部相应的⽅法 2、具体说明 ①.NSInvocationOperation子类 脱离队列,在主线程中执行 要执行,必须调用 [operation start]; //创建操作对象,封装要执行的任务 //NSInvocationOperation 封装操作 NSInvocationOperation *operation=[[NSInvocationOperation alloc]initWithTarget:self selector:@selector(test) object:nil];

    1.1K140发布于 2018-05-11
  • 来自专栏iOS 技术分享

    iOS - 多线程(四):NSOperation

    NSOperation 使用  2.1 NSInvocationOperation  2.2 NSBlockOperation 3. NSOperation:操作 NSOperation 类是一个抽象类,不能直接使用它来封装任务,而是使用系统定义的子类( NSInvocationOperation 或 NSBlockOperation NSOperation 使用 2.1 NSInvocationOperation 默认情况下,调用 NSOperation 的 start 方法后并不会开一条新线程去执行操作,而是在当前线程同步执行操作 对象 NSInvocationOperation *operation = [[NSInvocationOperation alloc]initWithTarget:self selector 对象 NSInvocationOperation *operation = [[NSInvocationOperation alloc]initWithTarget:self selector

    2K10发布于 2020-04-16
  • 来自专栏TechBox

    浅析iOS多线程编程之NSOperation

    ,实现内部相应的方法 (自定义) (一) NSInvocationOperation NSInvocationOperation初始化的方法有两个,分别如下: - (nullable instancetype NSInvocationOperation对象。 注意:NSInvocationOperation实例对象直接调用start方法是在当前线程执行操作封装的任务。而不是在子线程中执行。 也就是说,NSInvocationOperation实例对象直接调用start方法不会开启新线程异步执行,而是同步执行。 只有将NSInvocationOperation实例对象添加到一个NSOperationQueue中,才会异步执行操作。

    8.4K50发布于 2018-06-05
  • 来自专栏hrscy

    iOS 多线程 - NSOperation

    封装的操作放到一条新线程中执行 二、NSOperation 的子类 NSOperation 是个抽象类,并不具备封装操作的能力,必须使用它的子类 使用 NSOperation 子类的方式有 3 种 NSInvocationOperation NSBlockOperation 自定义子类继承 NSOperation ,实现内部相应的方法 三、具体使用 1.NSInvocationOperation 的使用 创建 NSInvocationOperation

    59610发布于 2018-08-30
  • 来自专栏Helloted

    多线程(三):NSOperation

    3、用法 NSOperation实现 一个是直接使用NSInvocationOperation、NSBlockOperation两个子类,一个是自己实现NSOperation的子类 NSInvocationOperation *invocationOperation = [[NSInvocationOperation alloc]initWithTarget:selfselector:@selector(invocationOperationAction

    35020编辑于 2022-06-07
  • 来自专栏mukekeheart的iOS之旅

    iOS学习——(转)多线程

    需要注意的是,NSOperation是个抽象类,实际运用时中需要使用它的子类,有三种方式: 使用子类NSInvocationOperation 使用子类NSBlockOperation 定义继承自 No.2:NSOperation的三种创建方式 NSInvocationOperation的使用:创建NSInvocationOperation对象并关联方法,之后start。 - (void)testNSInvocationOperation { // 创建NSInvocationOperation NSInvocationOperation *invocationOperation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(invocationOperation) object: NSInvocationOperation *invocationOperation = [[NSInvocationOperation alloc] initWithTarget:self

    1.5K20发布于 2018-08-01
  • 来自专栏HelloWorld杰少

    iOS多线程NSThread,NSOperation和GCD详解

    NSOperation&NSOperationQueue NSOperation 是苹果公司对 GCD 的封装,NSOperation 只是一个抽象类,不能用于封装任务, 所以需要用它的子类NSInvocationOperation 示例代码如下: 相比NSInvocationOperation推荐使用NSBlockOperation,因为它代码简单,同时由于闭包性使它没有传参问题,NSInvocationOperation在Swift 相比NSInvocationOperation推荐使用NSBlockOperation,代码简单,同时由于闭包性使它没有传参问题.

    1.2K20编辑于 2022-08-03
  • 来自专栏iOS技术杂谈

    iOS多线程——你要知道的NSOperation都在这里你要知道的iOS多线程NSThread、GCD、NSOperation、RunLoop都在这里

    后文会讲),但NSOperation类的这两个方法是空方法,没有干任何事情,因此,我们需要自定义继承NSOperation类并重写相关方法,OC也提供了两个子类供我们使用NSBlockOperation和NSInvocationOperation 对象,指定执行的对象和方法 该方法可以接收一个参数即object */ NSInvocationOperation *invocationOperation = [[NSInvocationOperation *invocationOperation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(task:) 使用Foundation提供的NSBlockOperation和NSInvocationOperation很方便,这两个子类已经帮我们完成了各个重要属性的设置操作,当block或传入的方法任务在执行时会设置 *invocationOperation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(task:)

    1.9K51发布于 2018-04-10
  • 来自专栏青玉伏案

    iOS开发之多线程技术(NSThread、OperationQueue、GCD)

    detachNewThreadSelector:@selector(loadImageWithThreadName:) toTarget:self withObject:@"NSThread"]; 6 } 7 }     3.NSInvocationOperation 的使用,新建一个调用操作,然后添加到队列中执行,代码如下: 1 //NSInvocationOperation 2 - (IBAction)tapInvocationOperation:(id)sender NSOperationQueue alloc] init]; 8 9 for (int i = 0;i < 10; i ++) { 10 //实例化一个调用操作,来执行数据请求 11 NSInvocationOperation *invocationOperation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(loadImageWithThreadName

    96750发布于 2018-01-11
  • 来自专栏网罗开发

    探索 SDWebImage 内部实现原理

    如果内存缓存中没有,生成 NSInvocationOperation 添加到队列开始从硬盘查找图片是否已经缓存。 根据 URLKey 在硬盘缓存目录下尝试读取图片文件。 写文件到硬盘也在以单独 NSInvocationOperation 完成,避免拖慢主线程。

    1.1K20发布于 2021-07-21
  • 来自专栏java编程那点事

    SDWebImage的实现过程

    如果内存缓存中没有,生成 NSInvocationOperation 添加到队列开始从硬盘查找图片是否已经缓存。 根据 URLKey 在硬盘缓存目录下尝试读取图片文件。 写文件到硬盘也在以单独 NSInvocationOperation 完成,避免拖慢主线程。

    55820编辑于 2023-02-25
  • 来自专栏進无尽的文章

    多线程-NSOperation和NSOperationQueue

    分别是:NSInvocationOperation 和 NSBlockOperation 。创建一个 Operation 后,需要调用 start 方法来启动任务,它会默认在当前队列同步执行。 #.创建NSInvocationOperation对象 NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget

    1.4K30发布于 2018-09-12
  • 来自专栏iOS逆向与安全

    多线程在iOS开发中的应用

    队列的使用、线程间的通信 延迟执行、一次性代码、队列组、单例模式-ARC、单例模式-MRC、用宏抽取单例模式 NSOperation NSOperation和NSOperationQueue的概念理解、NSInvocationOperation NSOperation是一个抽象基类,iOS提供了两种默认实现:NSInvocationOperation和NSBlockOperation,当然也可以自定义NSOperation.

    1.9K30发布于 2021-08-25
  • 来自专栏雨尘分享

    SDWebImage 引发的 cell不断下拉引起的闪退 卡顿

    如果内存中没有图片缓存,那么生成 NSInvocationOperation 添加到队列,从硬盘查找图片是否已被下载缓存。 根据 URLKey 在硬盘缓存目录下尝试读取图片文件。 写文件到硬盘在单独 NSInvocationOperation 中完成,避免拖慢主线程。

    1.4K20发布于 2018-06-01
领券