1 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
2 {3 NSLog(@"%s",__func__);4
5 /*
6 //performSelector默认是在default模式下运行7 // [self.imageView performSelector:@selector(setImage:) withObject:[UIImage imageNamed:@"abc"] afterDelay:2.0 ];8
9 [self.imageView performSelector:@selector(setImage:) withObject:[UIImage imageNamed:@"abc"] afterDelay:2.0 inModes:@[NSDefaultRunLoopMode,UITrackingRunLoopMode]];10
11
12 */
13 //1.创建线程14 //线程只能执行第一次封装的任务,不能尝试重新执行
15 XMGThread *thread = [[XMGThread alloc]initWithTarget:self selector:@selector(show) object:nil];16
17 //2.启动线程
18 [thread start];19
20
21
22 self.thread =thread;23 }24
25 -(void)show{26 NSLog(@"show---");27
28 /*
29 1.子线程的ruanloop是需要自己手动创建的30 2.子线程的ruanloop是需要主动开启的31 3.子线程的ruanloop里面至少要有一个source或者是timer,observer不行的32 */
33
34 [[NSRunLoop currentRunLoop] addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];35
36 /*
37 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(test) userInfo:nil repeats:YES];38
39 [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];40
41 */
42
43 // //创建一个监听对象44 ///*45 //第一个参数:分配存储空间的46 //第二个参数:要监听的状态 kCFRunLoopAllActivities 所有状态47 //第三个参数:是否要持续监听48 //第四个参数:优先级49 //第五个参数:回调50 //*/51 //CFRunLoopObserverRef observer = CFRunLoopObserverCreateWithHandler(CFAllocatorGetDefault(), kCFRunLoopAllActivities, YES, 0, ^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) {52 //});53 //
54 // //给runloop添加监听者55 ///*56 //第一个参数:要监听哪个runloop57 //第二个参数:监听者58 //第三个参数:要监听runloop在哪种运行模式下的状态59 //*/60 //CFRunLoopAddObserver(CFRunLoopGetCurrent(), observer, kCFRunLoopDefaultMode);61 //
62 //CFRelease(observer);
63
64 [[NSRunLoop currentRunLoop]run];65 }66
67 - (IBAction)btnClick:(id)sender {68 NSLog(@"btnClick");69 [self performSelector:@selector(test) onThread:self.thread withObject:nil waitUntilDone:YES];70
71 //[self.thread start];
72
73 }74
75 -(void)test76 {77 NSLog(@"test---%@",[NSThread currentThread]);78 }