[爱上Swift] day9:初探swift语言(线程)
时间:2014-10-08 17:42:45
收藏:0
阅读:232
作者:fengsh998
原文地址:http://blog.csdn.net/fengsh998/article/details/30354127
转载请注明出处
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)