iOS多线程的实现方式有三种,1、NSThread。 2、NSOperation。 3、GCD。
1、NSThread
NSThread 调用方法一般如下几种。
1.1 [NSThread detachNewThreadSelector:<#(SEL)#> toTarget:<#(id)#> withObject:<#(id)#>];
1.2 NSThread * newThread = [[NSThread alloc] initWithTarget:<#(id)#> selector:<#(SEL)#> object:<#(id)#>];
[newThread start];
1.3 [self performSelector:<#(SEL)#> withObject:<#(id)#>];
2、NSOperation
NSOperation也是多线程的一种,NSOperation有两种形式
(1)并发执行
并发执行需要重载4个方法。
1、执行任务的主函数,运行程序的入口
-(void)start
2、是否允许并发,返回yes表示允许并发,no为不允许并发。默认为no。
-(void)isConCurrent
3、-(void)isExecuting
4、是否完成,这个方法必须重载。不然放在NSoperationQueue不能正常释放。
-(void)isFinished
(2)非并发执行
非并发执行只需要重载main方法就可以了。
-(void)main
3、GCD
GCD是和block紧密相连的,GCD是C level的函数,这也意味着它也提供了C的函数指针作为参数方便了C程序员
GCD的使用
1、 dispatch_async(<#dispatch_queue_t queue#>, <#^(void)block#>)
async表明异步运行,block代表是需要做的事情。queue是把事情交给谁来处理。(出了async还有sysc和delay)
GCD有三种queue来处理
(1)main queue
(2)serial queue(private dispatch queue)
(3) ConCurrent queue (global dispatch queue)
更多详细的讲解:http://wenku.it168.com/d_001264369.shtml