1 @interface ViewController () 2 @end 3 4 @implementation ViewController 5 6 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 7 { 8 10 [NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil]; 11 12 13 //同样开启的是子线程 14 // NSThread *r = [[NSThread alloc]initWithTarget:self selector:@selector(run) object:nil]; 15 // [r start]; 16 17 } 18 19 20 - (void)run 21 { 22 23 NSLog(@"run----%@",[NSThread currentThread]); 24 25 26 //为什么没执行task :注意这个方法虽然内部会自动加入runloop中,但这条子线程中的runloop还没开启,子线程中的runloop是需要手动开启的 27 //该方法内部自动将performSelector 事件添加到当前的runloop中,指定的运行模式为默认 28 [self performSelector:@selector(task) withObject:nil afterDelay:1.0]; 29 30 //开启runloop 31 [[NSRunLoop currentRunLoop]run]; 32 } 33 34 35 - (void)task 36 { 37 38 NSLog(@"task----%@",[NSThread currentThread]); //子线程 39 }