NSTimer选择器问题
问题描述:
问候!!NSTimer选择器问题
我已经例如以下功能:
-(void) doMainBrick
{
NSTimer * timer = [NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(dropBrick:)
userInfo:nil
repeats:YES];
}
-(void) dropBrick:(NSTimer*) timex
{
//deal something
[self SwitchBrick];
}
我不知道是否有可能,如果dropBrick
功能做多scheduledTimerWithTimeInterval
(我上面的样本中,它是0.1), 另一个呼叫dropBrick
发生再次(每0.1秒火力下降,重复:是)? 还是不管,NSTimer
会等到最后dropBrick结束然后解雇?
答
NSTimers
计划在RunLoop上。
这意味着在RunLoop的每次迭代中,系统将执行以下操作:
- 检查是否有安排一些定时器针对他们的火时间已过。如果是这样,则启动相关的方法。
- 检查是否有其他输入源(如RunLoop等调度的套接字)有输入数据继续进行,如果是这样的话。
- 检查是否有事件之前,像触摸事件,并处理它们(火灾相关联的动作)
- 执行绘图
- 迭代再次
结果:
- 的
NSTimer
不关心你是否自己手动调用dropBrick除了定时器本身触发的调用 - 如果方法调用b如果计时器超过指定的timeInterval,则在RunLoop迭代结束时,该方法将立即再次触发,因为下一次调用的启动日期已经过去。
答
一个想法我能想到的是......
设置重复:NO,让dropBrick递归调用本身。增加一些睡眠来控制递归调用的频率。