iOS多线程应用开发中使用NSOperation类的基本方法

2020-01-14 16:31:27王旭


复制代码
@implementation YYViewController

 

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //NSOperation:抽象类,不具备封装功能
    
    //创建操作对象,封装要执行的任务
    //NSInvocationOperation   封装操作
    NSInvocationOperation *operation=[[NSInvocationOperation alloc]initWithTarget:self selector:@selector(test) object:nil];
    
    //执行操作
    [operation start];

}

-(void)test
{
    
    NSLog(@"--test--%@--",[NSThread currentThread]);
}
@end


打印查看:

 

iOS多线程应用开发中使用NSOperation类的基本方法

注意:操作对象默认在主线程中执行,只有添加到队列中才会开启新的线程。即默认情况下,如果操作没有放到队列中queue中,都是同步执行。只有将NSOperation放到一个NSOperationQueue中,才会异步执行操作

2.NSBlockOperation子类

创建对象和添加操作:

复制代码
//创建NSBlockOperation操作对象
    NSBlockOperation *operation=[NSBlockOperation blockOperationWithBlock:^{
        //......
    }];
    
    //添加操作
    [operation addExecutionBlock:^{
        //....
    }];
代码示例:

 

代码1:

复制代码
//
//  YYViewController.m
//  02-NSTherad基本2
//
//  Created by 孔医己 on 14-6-25.
//  Copyright (c) 2014年 itcast. All rights reserved.
//