
//
// 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)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)