码迷,mamicode.com
首页 > 移动开发 > 详细

ios多线程开发基础

时间:2016-11-12 19:51:54      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:nts   main   jpg   queue类   指定   patch   线程   sof   tun   

多线程编程:下载数据时,开辟子线程,减少阻塞时间,和主线程并发运行,提升用户体验

1.Thread

1>新建Thread对象,带一selector方法,调用start方法,开启子线程

2>thread初始化自带的selector方法中请求数据

3>数据请回来后,调用self的performSelectorOnMainThread方法,又带一selector,以及相应的参数,通常是请求回的数据,如果不是self,将找不到selector方法//必须是self

4>对请求回的数据进行处理,实现UI更新

 

2.GCD-great central dispatch

1>使用DispatchQueue类型新建队列

2>dispatch_queue.async{

//请求数据代码

//切回主线程

DispatchQueue.main.async{

//更新UI代码

}

}

 

3.Operation

1>使用OperationQueue类型新建队列

2>使用BlockOperation类型新建操作,操作中先请求数据,在调用self的performSelectorOnMainThread方法切回主线程,最后更新UI

code:

        let operation = BlockOperation { 

            let url = URL(string:"http://pic37.nipic.com/20131227/17514635_163144299116_2.jpg")

            let data = NSData(contentsOf: url!) as! Data

            let img = UIImage(data: data)

            //用指定方法更新UI,调用者必须为当前的viewController!!!

            self.performSelector(onMainThread: #selector(self.updateImage(image:)), with: img, waitUntilDone: false)

            

        }

        queue.addOperation(operation)

3>将操作加入队列

ios多线程开发基础

标签:nts   main   jpg   queue类   指定   patch   线程   sof   tun   

原文地址:http://www.cnblogs.com/xiaoerheiwatu/p/6057149.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!