iOS线程-NSOperation,NSThread以及GCD
来源:互联网 发布:java 获取接口url地址 编辑:程序博客网 时间:2024/04/29 15:42
iOS开发中实现多线程有三种方式:NSThread,NSOperation和GCD。本文介绍三种方式的具体实现。
1.NSThread
初始化一个线程有两种方式:
/*******NSObject的类方法**************/ [self performSelectorInBackground:@selector(secondMethod) withObject:self]; /*******NSThread,有两种方法**********/ //1.类方法 会自动运行main方法 [NSThread detachNewThreadSelector:@selector(firstMethod) toTarget:self withObject:nil]; //2.alloc 线程需要start NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(firstMethod) object:nil]; [thread start];
2.NSOperation
NSOperationQueue *queue = [[NSOperationQueue alloc] init]; queue.maxConcurrentOperationCount = 3;//最多同时运行的线程数 for (int i=0; i<10; i++) { MyOperation *opr = [[MyOperation alloc] init];//自定义一个operation类,继承自NSOperation opr.time = i; [queue addOperation:opr]; [opr release]; }MyOperation.h
#import <Foundation/Foundation.h>@interface MyOperation : NSOperation@property (nonatomic, assign) int time;@end
MyOperation.m
#import "MyOperation.h"@implementation MyOperation@synthesize time;//只要实例化该对象并添加到队列中之后,会自动调用main方法- (void)main{ sleep(self.time); NSLog(@"%d", self.time);}@end
3. GCD
关于GCD会用另一篇文章介绍,此处直接写用法
//创建一个串行线程队列,第一个参数是队列的名字,第二个参数不知道 dispatch_queue_t opqueue = dispatch_queue_create("my operation queue", NULL); //异步执行线程,在t中执行block语句 dispatch_async(opqueue, ^{ [self first]; }); //得到一个并行线程队列,第一个参数是优先级 dispatch_queue_t opqueue2 = dispatch_get_global_queue(0, 0); dispatch_async(opqueue2, ^{ [self second]; });
另外,这些线程不能操作UI,但是可以回调,让来执行UI方面的操作,有两种方式:
//回到主线程 //第一种方法// [self performSelectorOnMainThread:@selector(first) withObject:self waitUntilDone:NO]; //第二种方法 dispatch_async(dispatch_get_main_queue(), ^{ _imageView.image = img; });
0 0
- iOS线程-NSOperation,NSThread以及GCD
- ios多线程之NSThread,GCD,NSOperation以及线程同步
- ios多线程之NSThread,GCD,NSOperation以及线程同步
- ios多线程之NSThread,GCD,NSOperation以及线程同步
- ios多线程之NSThread,GCD,NSOperation以及线程同步
- IOS-线程操作之NSThread/NSOperation/GCD
- iOS之多线程开发(NSThread,NSOperation,GCD)
- iOS开发之多线程NSThread,NSOperation,GCD
- iOS - 线程(NSThread / NSOperation / GCD)
- [绍棠] iOS线程介绍 NSThread, NSOperation, GCD
- iOS 多线程NSThread、NSOperation、GCD
- iOS多线程NSThread/NSOperation/GCD
- IOS多线程(NSThread,NSOperation,GCD)
- iOS 多线程NSThread-NSOperation-GCD
- iOS多线程 GCD NSoperation NSThread
- iOS多线程(NSThread、NSOperation、GCD)
- iOS开发之多线程——NSThread、NSOperation、GCD
- 多线程、NSThread 、NSOperation、GCD、线程同步
- Java中密码的校验以及加密函数
- 微软公司的虚拟化技术概览
- 软件工程师经验
- 黑马程序员_继承
- Hadoop命令大全
- iOS线程-NSOperation,NSThread以及GCD
- 为您的设备添加社交网络功能
- C++编程规范
- 黑马程序员 基本数据类型
- C#线程UI更新,SynchronizationContext方法
- DOM4J创建XML一个实例
- 第八周 从0开始悠闲的一周
- Eclipse git 插件使用遇到的问题
- 专题:ajax