第一种创建线程的方式:alloc init
特点:开启线程需要手动开启线程(调用start方法),可以拿到线程对象进行详细设置
/*
第一个参数:目标对象
第二个参数:选择器,线程启动要调用哪个方法
第三个参数:前面方法要接收的参数(最多只能接收一个参数,没有则传nil)
*/
let thread = NSThread.init(target: self, selector: #selector(run123(_:)), object: nil)
//设置基本属性
//设置线程的名称
thread.name = "线程X"
/*
设置线程的优先级,
注意线程优先级的取值范围为0.0~1.0之间,
1.0表示线程的优先级最高,如果不设置该值,那么理想状态下默认为0.5
*/
thread.threadPriority = 10.0
//启动线程
thread.start()
第二种创建线程的方式:分离出一条子线程
特点:自动启动线程,无法对线程进行更详细的设置
/*
第一个参数:选择器,调用哪个方法
第二个参数:目标对象
第三个参数:传递给调用方法的参数
*/
NSThread.detachNewThreadSelector(#selector(run123(_:)), toTarget: self, withObject: "自动开启")
第三种创建线程的方式:后台线程
特点:自动启动线程,无法进行更详细设置
performSelectorInBackground(#selector(run123(_:)), withObject: "后台线程")
测试方法
func run123(str : String) {
for i in 0 ..< 100 {
print(NSThread.currentThread(), i,str);
}
}