首先介绍
NSThread
创建线程的方法:
1
|
public convenience init(target: AnyObject, selector: Selector, object argument: AnyObject?)
|
public class NSThread : NSObject
从这里可以看出,
NSThread
是继承自
NSObject
的类,它的创建是一个构造器
init
,所以使用实例化对象的方式就可以调用了。
1
|
let thread = NSThread(target: <AnyObject>, selector: <Selector>, object: <AnyObject>)
|
现在我们来看一下,这个方法的几个参数,分别代表的含义。
下面,我们要做的是通过点击,来调用
NSThread
。
我们在
ViewController
里创建一个
touchesBegan
的方法,并创建一个对象接收线程:
1 2 3
|
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { let thread = NSThread(target: self, selector: #selector(ViewController.run(_:)), object: "我是run的传入值") }
|
然后我们在
ViewController
中创建
run
这个方法:
1 2 3 4 5
|
func run(str: NSString) { let thread = NSThread.currentThread() print("\(str) , 我是线程\(thread) , 我要run了") }
|
在
touchesBegan
方法中,启动线程:
1 2 3 4 5 6
|
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { let thread = NSThread(target: self, selector: #selector(ViewController.run(_:)), object: "我是run的传入值") thread.start() }
|
现在我们运行模拟器,点击一下屏幕,控制台打印出:
1
|
我是run的传入值 , 我是线程<NSThread: 0x7b97e1c0>{number = 2, name = (null)} , 我要run了
|
number = 2, name = (null)
所以我们成功使用了
NSThread
子线程。
我是run的传入值,表示
init
构造器的第三个参数,同时也是第二个参数的传入值。
1 2 3 4
|
public class func currentThread() -> NSThread //获取当前的线程 public class func sleepForTimeInterval(ti: NSTimeInterval) //休眠到指定的时间 public class func exit() //退出进程 public class func sleepUntilDate(date: NSDate) //休眠到指定的日期
|