初探swift语言的学习笔记五(线程)

作者:fengsh998
原文地址:http://blog.csdn.net/fengsh998/article/details/30354127
转载请注明出处
假设认为文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢!


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()


原文地址:https://www.cnblogs.com/mengfanrong/p/4036975.html