标签: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>将操作加入队列
标签:nts main jpg queue类 指定 patch 线程 sof tun
原文地址:http://www.cnblogs.com/xiaoerheiwatu/p/6057149.html