swift_多线程基础_最简单用法(GCD, NSOperationQueue, NSThread)

swift_多线程基础_最简单用法(GCD, NSOperationQueue, NSThread),第1张

概述// //  ViewController.swift //  study1-1 // //  Created by admin on 15/12/28. //  Copyright © 2015年 admin. All rights reserved. // import UIKit class ViewController: UIViewController {          @IBOut

//

// VIEwController.swift

// study1-1

// Created by admin on 15/12/28.

// copyright © 2015 admin. All rights reserved.

//


import UIKit


class VIEwController: UIVIEwController {

@IBOutlet var myLable:UILabel?

@IBAction func clickbutton(){

// IOS多线程有以下三种实现方法

// 1. GCD

// 子线程中请求网络

dispatch_async(dispatch_get_global_queue(disPATCH_QUEUE_PRIORITY_DEFAulT,0),{

// 开始网络请求

self.sendData()

// 在主线程中更新UI

dispatch_async(dispatch_get_main_queue(),{

self.updateLable()

})

})

// 2. NSOperationQueue: 系统提供的类,直接在这个累方法中将需要多线程执行的代码放入即可,但是同时要将UI更新放入主线程,则只能把UI更新的代码通过GCD方式添加到主线程中

let myOperation = NSBlockOperation(block: {

self.sendData1() // 这里要注意在sendData1()中将UI更新使用GCD添加到主线程

})

NSOperationQueue().addOperation(myOperation)

// 3. NSThread

NSThread.detachNewThreadSelector("sendData1",toTarget: self,withObject: nil)

}

// 发送数据,

// 一般放在子线程中,如果放在主线程中会阻塞UI的更新,造成假死现象

func sendData(){

sleep(5)

}

// 更新UI

// 一般放在主线程中

func updateLable(){

myLable?.text = "数据发送成功"

}

func sendData1(){

sleep(5)

// 在主线程中更新UI

dispatch_async(dispatch_get_main_queue(),{

self.updateLable()

})

}

overrIDe func vIEwDIDLoad()

{

super.vIEwDIDLoad()

}


overrIDe func dIDReceiveMemoryWarning()

{

super.dIDReceiveMemoryWarning()

}

}

总结

以上是内存溢出为你收集整理的swift_多线程基础_最简单用法(GCD, NSOperationQueue, NSThread)全部内容,希望文章能够帮你解决swift_多线程基础_最简单用法(GCD, NSOperationQueue, NSThread)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1080783.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存