iOS开发之多线程了解

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中实现子线程的操作


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值