Swift 并没有使用新一套线程,使用OC源有的一套线程。下面以例子来演示一下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()
-
顶
- 0