前端之家收集整理的这篇文章主要介绍了
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种方式