IOS 之 多线程
2013-10-24 21:08
423 查看
ios有三种主要方法:1、NSThread。2、NSOperation。3、GCD。
1、 NSThread:
调用方法如下:如果需要函数参数的话,可以通过Object传递。
1.1:[NSThread detachNewThreadSelector:@selector(threadInMainMethod:) toTarget:self withObject:nil];
1.2:NSThread* myThread = [[NSThread alloc] initWithTarget:self selector:@selector(threadInMainMethod:) object:nil];
[myThread start];
1.3: [obj performSelectorInBackground:@selector(threadMe) withObject:nil];
2、 NSOperation:
NSOperation也是多线程的一种,NSOpertaion有2种形式.
(1) 并发执行
并发执行你需要重载如下4个方法
//执行任务主函数,线程运行的入口函数
- (void)start
//是否允许并发,返回YES,允许并发,返回NO不允许。默认返回NO
-(BOOL)isConcurrent
- (BOOL)isExecuting
//是否已经完成,这个必须要重载,不然放在放在NSOperationQueue里的NSOpertaion不能正常释放。
- (BOOL)isFinished
比如TestNSOperation:NSOperaion 重载上述的4个方法,
声明一个NSOperationQueue, NSOperationQueue *queue = [[[NSOperationQueue alloc ] init] autorelease];
[queue addOperation:testNSoperation];
它会自动调用TestNSOperation里的 start函数,如果需要多个NSOperation,你需要设置queue的一些属性,如果多个NSOperation之间有依赖关系,也可以设置,具体可以参考API 文档。
(2)非并发执行
-(void)main
只需要重载这个main方法就可以了。
3、 GCD苹果重点推荐的开发技术
dispatch_async(dispatch_queue_t
queue, dispatch_block_t block);
block代表的是要做的事情, queue则是创建新线程还是加入到主线程的队列.
dispatch_queue_t 可以分为3个队列:
1.串行队列 每次只能执行一个任务. 由dispatch_queue_create创建
2.并发队列 同时可以执行多个任务. 由dispatch_get_global_queue(0,
0) 第一个0是优先级,第二个0是保留值填0
3.主队列 在程序的主线程中执行,用于更新UI. 由dispatch_get_main_queue()创建
分组执行
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, dispatch_get_global_queue(0, 0), block); 组里第一个线程
dispatch_group_async(group, dispatch_get_global_queue(0, 0), block); 组里第二个线程
dispatch_group_notify(group, dispatch_get_global_queue(0, 0), block); 组里的线程都执行完了才执行它
一些其他函数
dispatch_once_t once; 结构体
dispatch_once(&once, ^{...}) //在程序的生命周期内只执行一次
相关文章推荐
- ios多线程操作(六)—— GCD全局队列与主队列
- IOS_多线程_ASI_AFN_UIWebView
- ios多线程
- iOS多线程之8.NSOPeration的其他用法
- iOS 多线程(三)NSOperation
- iOS轻量级多线程实现
- iOS技术面试01:多线程与网络
- iOS多线程
- ios多线程 -- GCD 常见用法
- iOS多线程的初步研究(九)-- dispatch源
- ios 多线程 -- NSOperation 常用方法
- 深入浅出 iOS 之多线程 NSThread
- 在多线程中进行UI操作--ios学习笔记
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- IOS_多线程编程4 - GCD
- iOS多线程
- IOS开发 网络与多线程
- IOS多线程
- IOS多线程处理 三种多线程的实例
- iOS之多线程编程:三个层次线程应用