https://www.jianshu.com/p/6e6f4e005a0b这篇文章非常不错。
ios的线程使用可以分为三种
1、直接创建Thread
2、使用gcd,gcd提供了队列,将自己的任务同步或者异步的加入队列中执行,同时提供了一堆同步工具
3、Operation和OperationQueue,我们可以方便的cancel掉运行的线程,如果自己做将非常不容易。
对于第一种,容易不小心创建出过多的线程,占用大量的系统资源,容易让手机瘫痪掉。
对于第二种GCD也不错,系统提供了全局队列和主队列,主队列里面会控制线程的多少,GCD自动维护了一个线程池,启动快,而且不会产生大量线程。
第三种更方便,甚至可以取消正在运行的线程。
对于ios编程的关键就是不能阻塞主线程,否则就会让用户操作响应变慢,编程的原则就是费时的操作在其他线程中完成,主线程只负责一些界面更新的工作。