您的位置:首页 > 移动开发 > IOS开发

iOS开发之多线程了解

2016-05-26 11:02 260 查看
iOS系统中,据我所知,有三种开辟多线程的方法。

下面给大家说明一下这三种多线程的区别和特点:

其中需要注明一点,在升级到Xcode7之后,我们在viewDidLoad中,如果想要更新视图的UI界面,添加什么控件之类的,我们需要开辟一个线程,在线程中更新这个视图UI。

NSTread

其中NSThread贴近底层系统,所以应用并不广泛。

较为常用的GCD,因为GCD虽然抽象但是很简单,用起来很方便。

但是如果是复杂一点的程序,要求高一些的话,通常用NSOperation来做多线程。

因为NSOperation有两点是GCD替代不了的,1是NSOperation有最大并发数量,GCD没有,2是NSOperation可以取消当前子线程,而GCD不能,所以如果需要高度定制的话,用复杂的NSOperation。

GCD

GCD有两个开启子线程的对象,一个是dispatch_async异步执行 ,另一个是dispatch_sync同步执行。

如果创建多个子线程的时候,可能会遇到线程同步的问题,这个时候我们可以用NSLock锁定线程,让异步执行GCD对象一个一个去执行。

GCD还有组别功能,类似计数器,进一个加1,出一个减1,当组别减少到0得时候,调用notifi的方法。

GCD还有信号量,同时并发线程数量的通道,我们可以设置信号量的等待方式,谁用完就可以将信号量的位置放开

NSOperation

NSOperation分为两种对象,一个是NSInvocationOperation对象,一个是NSBlockOperation对象,

如果想要让对象工作,则必须要创建NSOperationQueue队列,并添加进去,同时设置队列的最大并发数量的属性

NSInvocationOperation对象可以调用相应方法,来实现子线程的操作

NSBlockOperation则是在自身的Block中实现子线程的操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: