swift_多线程基础_最简单用法(GCD, NSOperationQueue, NSThread
// // 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() } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |