ios多线程之NSThread使用技巧
程序员文章站
2023-08-24 08:40:06
一个nsthread对象就代表着一条线程
创建启动线程
//创建线程
/*
第一个参数:目标对象
第二个参数:选择器,线程启动要调用哪个方法
第三个参数:前面方法要接收的...
一个nsthread对象就代表着一条线程
创建启动线程
//创建线程 /* 第一个参数:目标对象 第二个参数:选择器,线程启动要调用哪个方法 第三个参数:前面方法要接收的参数(最多只能接收一个参数,没有则传nil) */ nsthread *thread = [[nsthread alloc]initwithtarget:self selector:@selector(run:) object:@"wendingding"]; //启动线程 [thread start]; //线程只要启动,就会在线程thread中执行self的run方法
其他两种创建线程的方法:
//第二种创建线程的方式:分离出一条子线程 //特点:自动启动线程,无法对线程进行更详细的设置 /* 第一个参数:线程启动调用的方法 第二个参数:目标对象 第三个参数:传递给调用方法的参数 */ [nsthread detachnewthreadselector:@selector(run:) totarget:self withobject:@"我是分离出来的子线程"]; //第三种创建线程的方式:后台线程 //特点:自动启动县城,无法进行更详细设置 [self performselectorinbackground:@selector(run:) withobject:@"我是后台线程"];
设置线程的属性
//设置线程的名称 thread.name = @"线程a"; //设置线程的优先级,注意线程优先级的取值范围为0.0~1.0之间,1.0表示线程的优先级最高,如果不设置该值,那么理想状态下默认为0.5 thread.threadpriority = 1.0;
线程的状态
//线程的各种状态:新建-就绪-运行-阻塞-死亡 //常用的控制线程状态的方法 [nsthread exit];//退出当前线程 [nsthread sleepfortimeinterval:2.0];//阻塞线程 [nsthread sleepuntildate:[nsdate datewithtimeintervalsincenow:2.0]];//阻塞线程 //注意:线程死了不能复生。