美文网首页
多线程(NSThread、NSOperation、NSInvoc

多线程(NSThread、NSOperation、NSInvoc

作者: 俊月 | 来源:发表于2016-02-26 09:13 被阅读35次

    使用Thread 的类方法detachNewThreadSelector
    创建线程

    • (void)viewDidLoad{ // 调用类方法的新线程 立即开始执行 // [NSThread detachNewThreadSelector:@selector(doIt) toTarget:self withObject:nil]; NSThread *thd = [[NSThread alloc] initWithTarget:self selector:@selector(doIt) object:nil]; // 线程优先级 thd.threadPriority = 10; [thd start];}-(void)doIt{ UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://pic14.nipic.com/20110522/7411759_164157418126_2.jpg"]]]; UIImageView *imgv = [[UIImageView alloc] initWithImage:img]; [self.view addSubview:imgv];}

    调用实例方法 start

    • (void)viewDidLoad{ // 调用类方法的新线程 立即开始执行 NSThread *thd = [[NSThread alloc] initWithTarget:self selector:@selector(doIt) object:nil]; // 线程优先级 thd.threadPriority = 10; [thd start];}-(void)doIt{ UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://pic14.nipic.com/20110522/7411759_164157418126_2.jpg"]]]; UIImageView *imgv = [[UIImageView alloc] initWithImage:img]; [self.view addSubview:imgv];}

    NSOperationQueue

    • (void)viewDidLoad{ //创建操作队列 NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init]; //设置队列中最大的操作数 [operationQueue setMaxConcurrentOperationCount:1]; //创建操作(最后的object参数是传递给selector方法的参数) NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(doIt) object:nil]; //将操作添加到操作队列 [operationQueue addOperation:operation];}-(void)doIt{ UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://pic14.nipic.com/20110522/7411759_164157418126_2.jpg"]]]; UIImageView *imgv = [[UIImageView alloc] initWithImage:img]; [self.view addSubview:imgv];}

    使用NSOperation子类
    来创建线程

    @implementation MyTaskOperation //相当于Java线程中的run方法 -(void)main { //do someting... NSLog(@"Thread is running..."); [NSThreadsleepForTimeInterval:3]; NSLog(@"Thread is done..."); } @end 使用方法

    NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init]; MyTaskOperation *myTask = [[MyTaskOperation alloc] init]; [operationQueue addOperation:myTask]; [myTask release]; [operationQueue release];

    相关文章

      网友评论

          本文标题:多线程(NSThread、NSOperation、NSInvoc

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