关于线程的一些知识
由一个问题说起
下面这段代码2秒之后居然能没有调用runn方法
1 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 2 { 3 // dispatch_queue_t queue = dispatch_get_main_queue(); 4 5 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 6 7 dispatch_async(queue, ^{ 8 NSLog(@"%@",[NSThread currentThread]); 9 [self performSelector:@selector(runn) withObject:nil afterDelay:2.0]; 10 11 }); 12 }
分析:
所有的NSThread都有一个属于自己的NSRunLoop,一般来说,这个函数会很快走完,线程就结束了。所以,当2秒之后,你的线程已经结束了。
如果还不理解可以参考下面的博客
或者自己打印当前的线程,跟runn方法里面的线程
http://blog.csdn.net/smking/article/details/8434555