swift 並無使用新一套線程,使用OC源有的一套線程。如下以樣例來演示一下swift中使用線程。swift
其用包含常見的:NSThread,NSOperationQueue,GCG微信
import UIKit class swiftThreadDemo : UIViewController { var queue = NSOperationQueue() // init() // { // //alloc // super.init() // } deinit { //dealloc } func testGCDThread() { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { //這裏寫需要大量時間的代碼 for var i = 0; i < 100000; i++ { println("GCD thread running.") } sleep(5); dispatch_async(dispatch_get_main_queue(), { //這裏返回主線程,寫需要主線程運行的代碼 println("這裏返回主線程,寫需要主線程運行的代碼") }) }) } func testNSThread() { //方式一 //NSThread.detachNewThreadSelector("threadInMainMethod:",toTarget:self,withObject:nil) //方式二 var myThread = NSThread(target:self,selector:"threadInMainMethod:",object:nil) myThread.start() } func threadInMainMethod(sender : AnyObject) { for var i = 0; i < 100000; i++ { println("NSThread running.") } sleep(5); println("NSThread over.") } func testNSOperationQueue() { //func (op: NSOperation!) var mopt = myOperationThread() queue.addOperation(mopt) } } class myOperationThread : NSOperation { override func start() { super.start() } override func main() { for var i = 0; i < 100000; i++ { println("NSOperation running.") } println("NSOperation over.") } }
var st = swiftThreadDemo() st.testNSThread() sleep(2) st.testGCDThread() st.testNSOperationQueue()