创建线程
//方式1 init
NSThread *thread1 = [[NSThread alloc] initWithTarget:self selector:@selector(action1) object:nil];
//方式2 子类化NSThread,覆写-(void)main
//方式3
[self performSelectorInBackground:@selector(action3) withObject:nil];
NSThread
@interface NSThread : NSObject
1 多线程中的任务能够和主线程中的任务并行执行。
//线程名字
@property (nullable, copy) NSString *name;
//线程是否取消
@property (readonly, getter=isCancelled) BOOL cancelled;
//获取主线程
+ (NSThread *)mainThread;
//获取当前线程
+ (NSThread *)currentThread;
//是否在多线程中
+ (BOOL)isMultiThreaded;
//是否在主线程中
+ (BOOL)isMainThread;
//线程执行
//如果线程未开始之前增加取消标记,则线程不再执行
- (void)start;
//线程添加取消标记
//线程一旦开始,无法取消
- (void)cancel;
//当前线程退出
//可通过判断线程是否添加取消标记来强制线程退出
+ (void)exit;
//设置休眠时间使当前线程休眠,在到达约定时间后,线程重新返回线程池等待CPU的调度
+ (void)sleepForTimeInterval:(NSTimeInterval)ti;