zoukankan      html  css  js  c++  java
  • ios多线程开发基础

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

    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>将操作加入队列

  • 相关阅读:
    第一章 第二节逻辑代数基础
    第一章 第一节数制与编码
    Altium Designer多原理图、PCB更新处理
    AD添加LOGO的方法
    XML中<beans>属性
    程序员值得学习的技术博客
    设计模式
    js分页实例
    Java构造和解析Json数据的方法
    H5+ 移动app学习之三 App离线存储
  • 原文地址:https://www.cnblogs.com/xiaoerheiwatu/p/6057149.html
Copyright © 2011-2022 走看看