前端之家收集整理的这篇文章主要介绍了
swift开启线程的3种方式(其实很简单的),
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
- 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种方式