java runloop_用RunLoop使一个线程一直运行

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 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值