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

    block与GCD--43:NSOperation 与NSOperationQueue

    )blockOperation:(id)sender { //初始化Operation子类 NSBlockOperation *operation = [NSBlockOperation NSBlockOperation *op3 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"-1--%@",[NSThread ]); }]; NSBlockOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@" ]); }]; NSBlockOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@" down2---%@",[NSThread currentThread]); }]; NSBlockOperation *op3 = [NSBlockOperation

    38010编辑于 2023-11-22
  • 来自专栏iOS 技术分享

    iOS - 多线程(四):NSOperation

    ]); }]; NSBlockOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@" ]); }]; NSBlockOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@" ]); }]; NSBlockOperation *opB = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@" ; sleep(1); }]; NSBlockOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{ }]; NSBlockOperation *op4 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"通知用户,%@"

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

    浅析iOS多线程编程之NSOperation

    (二) NSBlockOperation NSBlockOperation是NSOperation的子类。 // 同步执行 NSBlockOperation *blkop = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"%@ 无需将NSBlockOperation对象加入到操作队列中。 注意:NSBlockOperation对象如果只封装了一个任务, 那么默认会在当前线程中同步执行。 // 异步执行 NSBlockOperation *blkop = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"任务 *op1 = [NSBlockOperation blockOperationWithBlock:^{ // 封装op2 NSBlockOperation *op2 =

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

    多线程之NSOperation小结

    两个子类: NSInvocationOperation (调用) NSBlockOperation (块) 相比NSInvocationOperation推荐使用NSBlockOperation,代码简单 *lOp1 = [NSBlockOperation blockOperationWithBlock:^{ 150 [NSThread sleepForTimeInterval:1]; *lOp2 = [NSBlockOperation blockOperationWithBlock:^{ 156 [NSThread sleepForTimeInterval:1]; *lOp3 = [NSBlockOperation blockOperationWithBlock:^{ 162 [NSThread sleepForTimeInterval:1]; *lOp4 = [NSBlockOperation blockOperationWithBlock:^{ 168 [NSThread sleepForTimeInterval:1];

    63820发布于 2020-09-04
  • 来自专栏清墨_iOS分享

    iOS多线程GCD任务取消->NSOperation

    *operation1 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"1"); }]; NSBlockOperation *operation2 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"2"); }]; NSBlockOperation *operation3 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"3"); }]; [operation1 *operation1 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"1"); }]; NSBlockOperation *operation2 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"2"); }]; NSBlockOperation

    3.3K10发布于 2019-04-17
  • 来自专栏DannyHoo的专栏

    NSOperation的简单使用代码

    代码: NSOperationQueue * queue = [[NSOperationQueue alloc] init]; NSBlockOperation * o1 = [NSBlockOperation (@"1.3---%@", [NSThread currentThread]); NSLog(@"1.4---%@", [NSThread currentThread]);     }]; NSBlockOperation * o2 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"2---%@", [NSThread currentThread]);     }]; NSBlockOperation * o3 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"3---%@", [NSThread

    66410发布于 2018-09-13
  • 来自专栏進无尽的文章

    多线程-NSOperation和NSOperationQueue

    #.创建NSBlockOperation对象 NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{ # 创建NSBlockOperation对象 NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{ #1.创建一个其他队列 NSOperationQueue *queue = [[NSOperationQueue alloc] init]; #2.创建NSBlockOperation对象 NSBlockOperation 这时就可以用到依赖了: #1.任务一:下载图片 NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^ ]); [NSThread sleepForTimeInterval:1.0]; }]; #3.任务三:上传图片 NSBlockOperation *operation3 = [NSBlockOperation

    1.4K30发布于 2018-09-12
  • 来自专栏iOS开发干货分享

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

    下边再来看看 NSBlockOperation。 使用子类 NSBlockOperation /** * 使用子类 NSBlockOperation */ - (void)useBlockOperation { // 1.创建 NSBlockOperation 但是,NSBlockOperation 还提供了一个方法 addExecutionBlock:,通过 addExecutionBlock: 就可以为 NSBlockOperation 添加额外的操作。 { // 1.创建 NSBlockOperation 对象 NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock 一般情况下,如果一个 NSBlockOperation 对象封装了多个操作。NSBlockOperation 是否开启新线程,取决于操作的个数。如果添加的操作的个数多,就会自动开启新线程。

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

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

    下边再来看看 NSBlockOperationNSBlockOperation 对象 NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock:^{ 但是,NSBlockOperation 还提供了一个方法 addExecutionBlock:,通过 addExecutionBlock: 就可以为 NSBlockOperation 添加额外的操作。 { // 1.创建 NSBlockOperation 对象 NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock 一般情况下,如果一个 NSBlockOperation 对象封装了多个操作。NSBlockOperation 是否开启新线程,取决于操作的个数。如果添加的操作的个数多,就会自动开启新线程。

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

    iOS--多线程之线程间通讯

    queue = [[NSOperationQueue alloc] init]; // 2.添加一个操作下载第一张图片 __block UIImage *image1 = nil; NSBlockOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{ NSURL *url = [NSURL URLWithString:@"http UIImage imageWithData:data]; }]; // 3.添加一个操作下载第二张图片 __block UIImage *image2 = nil; NSBlockOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{ NSURL *url = [NSURL URLWithString:@"http *op3 = [NSBlockOperation blockOperationWithBlock:^{ UIGraphicsBeginImageContext(CGSizeMake(200

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

    iOS--多线程之NSOperation

    NSOperation的子类 NSOperation是个抽象类,并不具备封装操作的能力,必须使⽤它的子类 使用NSOperation⼦类的方式有3种: (1)NSInvocationOperation (2)NSBlockOperation 子类 可以追加任务 addExecutionBlock: 也脱离队列,执行时候需调用 [operation start]; //创建NSBlockOperation操作对象 NSBlockOperation *operation=[NSBlockOperation blockOperationWithBlock:^{ // 主线程 NSLog(@"NSBlockOperation- ------%@",[NSThread currentThread]); }]; [operation addExecutionBlock:^{ NSLog(@"NSBlockOperation2 init]; 2.添加任务到队列中 自动执行操作,自动开启线程 第一种 [queue addOperation:operation2]; 第二种 addOperationWithBlock:相当于封装NSBlockOperation

    1.1K140发布于 2018-05-11
  • 来自专栏服务端技术杂谈

    推荐:多线程的实现方式及经典示例

    NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock:^{ // 在主线程 NSLog(@"下载1--- *block1 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"download1 -------------- %@", [NSThread currentThread]); }]; NSBlockOperation *block2 = [NSBlockOperation blockOperationWithBlock:^{ NSLog (@"download2 -------------- %@", [NSThread currentThread]); }]; NSBlockOperation *block3 = [NSBlockOperation *block3 = [NSBlockOperation blockOperationWithBlock:^{ UIGraphicsBeginImageContext(CGSizeMake(imageW

    1.4K160发布于 2018-04-16
  • 来自专栏iOS 开发杂谈

    iOS多线程之四:NSOperation的使用

    1、NSBlockOperation:使用这个类来用一个或多个block初始化操作,操作本身可以包含多个块。当所有block被执行操作将被视为完成。 三、NSBlockOperation 使用这个类来用一个或多个block初始化操作,操作本身可以包含多个块。当所有block被执行操作将被视为完成。 ? Paste_Image.png 从运行的结果可以看出,NSBlockOperation确实实现了多线程。但是我们可以看到,它并非是将所有的block都放到放到了子线程中。 四、自定义NSOperation 如果NSInvocationOperation和NSBlockOperation对象不能满足需求,可以自定义NSOperation,添加我们想要的功能。 Paste_Image.png 从运行结果可以看出,NSInvocationOperation和NSBlockOperation是异步执行的,NSBlockOperation中的每一个Block也是异步执行且都在子线程中执行

    1.3K30发布于 2018-09-11
  • 来自专栏iOSer

    NSOperationQueue队列中操作依赖相关思考

    // lQ.maxConcurrentOperationCount = 1; NSBlockOperation *lOp0 = [NSBlockOperation blockOperationWithBlock "0 error"); }]; NSLog(@"0 %@", [NSThread currentThread]); }]; NSBlockOperation *lOp1 = [NSBlockOperation blockOperationWithBlock:^{ AFHTTPSessionManager *lMng = [AFHTTPSessionManager error"); }]; NSLog(@"1 %@", [NSThread currentThread]); }]; NSBlockOperation *lOp2 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"2 %@", [NSThread currentThread]

    56210发布于 2020-09-04
  • 来自专栏mukekeheart的iOS之旅

    iOS学习——(转)多线程

    NSInvocationOperation包含的任务,没有加入队列========{number = 1, name = main}  NSBlockOperation的使用:把任务放到NSBlockOperation - (void)testNSBlockOperation { // 把任务放到block中 NSBlockOperation *blockOperation = [NSBlockOperation NSBlockOperation包含的任务,没有加入队列========{number = 1, name = main} 但是NSBlockOperation有一个方法addExecutionBlock :,通过这个方法可以让NSBlockOperation实现多线程。 NSBlockOperation *blockOperation = [NSBlockOperation blockOperationWithBlock:^{ for (int

    1.5K20发布于 2018-08-01
  • 来自专栏iOS开发~

    iOS_多线程三:NSOperation的使用

    目录 一、NSInvocationOperation 二、NSBlockOperation 三、NSOperationQueue NSOperation 是一个抽象类,线程安全,不需要添加额外的锁 使用其子类 :NSInvocationOperation 和 NSBlockOperation 1、NSInvocationOperation 一个对象,表示一个任务 默认在主线程中同步顺序执行,想要并行异步,需要搭配 `NSOperationQueue`使用 同步/异步,通过设置最大并发数`maxConcurrentOperationCount`实现:1:串行 >=2:并行 默认:-1 异步(无穷大) 2、NSBlockOperation queuePriority]; // 优先级 NSArray<NSOperation *> *dependencies = [operation dependencies]; // 依赖的任务数组 二、NSBlockOperation NSBlockOperation *block = [NSBlockOperation blockOperationWithBlock:^{ // 默认在主线程中 NSLog(@"执行2 block

    70310编辑于 2022-07-20
  • 来自专栏日常技术分享

    iOS 多线程总结

    *opA = [NSBlockOperation blockOperationWithBlock:^{ sleep(1); [[NSThread currentThread ]setName:@"任务A"]; NSLog(@"任务A thread:%@",[NSThread currentThread]); }]; NSBlockOperation *opB = [NSBlockOperation blockOperationWithBlock:^{ sleep(10); [[NSThread currentThread ]setName:@"任务B"]; NSLog(@"任务B thread:%@",[NSThread currentThread]); }]; NSBlockOperation *opC = [NSBlockOperation blockOperationWithBlock:^{ sleep(3); [[NSThread currentThread

    99350发布于 2019-09-27
  • 来自专栏一“技”之长

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

    这个类是一个抽象类,通常情况下,我们会使用NSInvocationOperation和NSBlockOperation这两个子类进行多线程的开发,当然我们也可以写继承于NSOperation的类,封装我们自己的操作类 设置操作的优先级 @property double threadPriority; 设置操作的名称 @property (copy) NSString *name; 2、带block的操作类实例——NSBlockOperation NSBlockOperation是NSOperation的一个子类,其可以异步的执行多个block,当所有的block都完成时,这个操作才算完成。  * opera = [NSBlockOperation blockOperationWithBlock:^{         for (int i=0; i<10; i++) {              三、NSOperationQueue操作队列 NSOperationQueue是操作队列类,通过上面的介绍,我们已经可以理解操作,并且操作默认的执行方式是串行的,尽管NSBlockOperation中的

    48320发布于 2018-08-16
  • 来自专栏hrscy

    iOS 多线程 - NSOperation

    NSOperation 的子类 NSOperation 是个抽象类,并不具备封装操作的能力,必须使用它的子类 使用 NSOperation 子类的方式有 3 种 NSInvocationOperation NSBlockOperation 默认情况下,调用了 start 方法后并不会开一条新线程去执行操作,而是在当前线程同步执行操作 只有将 NSOperation 放到一个 NSOperationQueue 中,才会异步执行操作 2.NSBlockOperation 的使用 创建 NSBlockOperation 对象 +(id)blockOperationWithBlock:(void (^)(void))block; 通过 addExecutionBlock: 方法添加更多的操作 addExecutionBlock:(void (^)(void))block; 注意: 只要 NSBlockOperation 封装的操作数 > 1 ,就会异步执行操作

    59510发布于 2018-08-30
  • 来自专栏iOS技术杂谈

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

    接下来举两个创建任务的栗子: //创建一个NSBlockOperation对象,传入一个block NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock *operation = [NSBlockOperation blockOperationWithBlock:^{ for (int i = 0; i < 100; i++) 使用Foundation提供的NSBlockOperation和NSInvocationOperation很方便,这两个子类已经帮我们完成了各个重要属性的设置操作,当block或传入的方法任务在执行时会设置 *operation1 = [NSBlockOperation blockOperationWithBlock:^{ for (int i = 0; i < 100; i++) *operation2 = [NSBlockOperation blockOperationWithBlock:^{ for (int i = 0; i < 100; i++)

    1.9K51发布于 2018-04-10
领券