ios

  1. Please write the final output of the following code
  • (void)viewDidLoad {
    [NSTimer scheduledTimerWithTimeInterval:5.0f target:self selector:@selector(functionTestA) userInfo:nil repeats:NO];
    [self functionTestB];
    [self functionTestC];
    }

  • (void)functionTestA { NSLog(@“functionTestA…”); }

  • (void)functionTestB {
    NSLog(@“functionTestB…”);
    [NSThread sleepForTimeInterval:10];
    }

  • (void)functionTestC { NSLog(@“functionTestC…”); }

执行顺序 BCA
时间 B - 0
C - 10
A - 10.01

NSTimer 加在runloop上,runloop可以理解为只要硬件在运行,runloop就会不断接收到硬件上的脉冲,当接收到5秒后,就会把A方法加入到当前队列的后面去,当前队列已有BC方法
所以执行是这样子的,一开始,当前队列是主队列,已有BC方法的执行语句,执行B方法,当前队列会挂起10秒钟,在第5秒时,A方法会被插入到当前队列的最后,在5秒后执行C方法,执行完C方法执行A方法

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值