- (void)creatNSThread{ //1、创建线程后启动线程 NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(run) object:nil]; [thread start]; //2、创建线程后自动启动线程 [NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil]; //3、隐式创建并启动线程 [self performSelectorInBackground:@selector(run) withObject:nil]; /* + (NSThread *)mainThread; //获得主线程 - (BOOL)isMainThread; //判断是否为主线程(对象方法) + (BOOL)isMainThread; //判断是否为主线程(类方法) NSThread *current = [NSThread currentThread]; //获得当前线程 - (void)setName:(NSString *)n; //线程的名字——setter方法 - (NSString *)name; //线程的名字——getter方法 - (void)start; //启动线程方法 //阻塞(暂停)线程方法 + (void)sleepUntilDate:(NSDate *)date; + (void)sleepForTimeInterval:(NSTimeInterval)ti; + (void)exit; //强制停止线程 线程进入死亡状态 // 在主线程上执行操作 - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait; - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait modes:(NSArray<NSString *> *)array; // equivalent to the first method with kCFRunLoopCommonModes // 在指定线程上执行操作 - (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait modes:(NSArray *)array; - (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait; // 在当前线程上执行操作,调用 NSObject 的 performSelector:相关方法 - (id)performSelector:(SEL)aSelector; - (id)performSelector:(SEL)aSelector withObject:(id)object; - (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2; //performSelectorOnMainThread */ } - (void)run{ NSLog(@"线程运行啦==%@", [NSThread currentThread]); }
线程状态转换