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()这就常用开启线程的3种方式
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。