1、线程的创建:
方式一:NSObject隐含的方法:
// 在新线程里执行 对象 A 的 methodInA 方法, 后面是传递的参数
[A performSelectorInBackground:@selector(methodInA:) withObject:obj];
方式二:快速创建,无返回值:
// 在新线程里执行 对象 A 的 methodInA 方法, 后面是传递的参数
[NSThread detachNewThreadSelector:@selector(methodInA:) toTarget:A withObject:obj];
方式三:alloc创建:
// 在新线程里执行 对象 A 的 methodInA 方法, 后面是传递的参数
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(aBackgroundThread:) object:obj];
[thread start];
第三种创建方式,要调用start方法,这个方法不是立即执行,而是加入进程池。
2、线程的相关参数:
thread.name = @"aThreadName";
thread.threadPriority = 0.5; // 优先级,0-1.0,默认0.5
thread.stackSize = 512 * 1024; // 线程栈大小,默认512k,最小16k
thread.isMainThread; // 线程是否为主线程
thread.threadDictionary; // 线程的相关信息
thread.isCancelled; // 线程是否被取消
3、线程的中途退出:
方式一:在线程外面做标记,在线程内的关键节点检测标记并退出线程:
//线程外
[thread cancel];
// 线程内
if (thread.isCancelled) {
return;
}
方式二:在线程内执行退出:
// 线程内
[NSThread exit];
4、线程的休眠:
方式一:
// 休眠固定的秒数
[NSThread sleepForTimeInterval:someSeconds];
方式二:
// 在某个时间点唤醒
[NSThread sleepUntilDate:aDate];
注意:一个线程在自然执行结束的时候,会自动结束线程,只有中途想退出的时候才需要调用以上的方法。