IOS常用知识点整理

关于IOS多线程三种方式的那点儿事

2016-05-24  本文已影响831人  洪荒少年郎

1.NSThread

NSThread是IOS提供的可以开辟一个线程的类,是完全面向对象的,可以直接操控线程对象和方法,非常直观和方便。

[NSThread isMainThread]可以返回一个Bool值。用于检测当前线程是主线程还是分线程。1是主线程;0是分线程。

[NSThread detachNewThreadSelector: toTarget: withObjct: ]这个方法是开辟一个分线程,第三个参数是你想要往这个方法里面传的值。

NSThread这种方法创建的线程需要管理线程的生命周期、同步、加锁问题,会导致一定的性能开销。不过可以用[NSThread currentThread]跟踪任务所在线程,在调试的时候十分方便。

2.NSOperation和NSOperationQueue

它是苹果公司对GCD的封装,是面向对象的线程技术。只需将任务放到对应的队列中,不必关心线程管理、同步等问题。

NSOperationQueue是个操作队列,可以开辟一个分线程,也称线程池。通过alloc创建出来的操作队列相当于开辟了一个分线程;[NSOperationQueue mainQueue]获取主队列,这时把操作对象放进主队列里,他们都会在主线程里执行任务。[queue addOperation: ]

NSOperation是操作队列要放置的操作对象。他是一个虚类,不能直接使用,只能用它的子类:NSInvocationOperation、NSBlockOperation。

需要注意的是更新刷新UI一定要在主线程里执行。

3.GCD(Grand Central Dispach)

GCD用来解决多核编程问题,IOS4之后提出的,是基于C语言的底层API。

GCD是苹果为多核编程的并行运算提出的解决方案,所以会自动合理的利用更多的CPU内核。

GCD会自动管理线程的生命周期,创建线程、调度任务、销毁线程。

GCD使用block来定义任务,使用起来非常灵活。

通过GCD可以创建串行、并发、主队列,可以同步和异步执行任务。

****************自己IOS学习的知识点总结,有不足之处,还请多多包涵***********

上一篇下一篇

猜你喜欢

热点阅读