开启关闭⏲️

NSTimer 的初始化方法 < 一 >

scheduledTimerWithTimeInterval:target:selector:userInfo:repeats: 方法

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats

seconds :需要调用的毫秒数
target :调用方法需要发送的对象。即:发给谁
userInfo :发送的参数
repeats :指定定时器是否重复调用目标方法

现在做个比喻:
可以把调度一个计时器与启动汽车的引擎相比较。调度的计时器就是运行中的引擎。没有被调度的计时器就是一个已经准备好启动但是还没有运行的引擎。我们在程序里面 , 无论何时 , 都可以调度和取消调度计时器 , 就像根据我们所处的环境 , 决定汽车的引擎是启动还是停止。如果你想要在程序中 , 手动的在某一个确定时间点调度计时器 , 可以使用 NSTimer 的类方法 timerWithTimeInterval:target:selector:userInfo:repeats: 方法。

NSTimer 的初始化方法 < 二 >

如果,我们想在任何时候都能够随心所欲的 启动 / 停止定时器。
scheduledTimerWithTimeInterval 方法本质上就是创建一个时钟,
添加到运行循环的模式是DefaultRunLoopMode

还有 NSTimer 的另一种初始化方法,能够满足我们的要求:

// 使用 timerWithTimeInterval 方法来实例化一个 NSTimer, 这时候 NSTimer 是不会启动的
self.paintingTimer = [NSTimer timerWithTimeInterval:1.0
                                                 target:self
                                               selector:@selector(paint:)
                                               userInfo:nil
                                                repeats:YES];
 
 
// 当需要调用时 , 可以把计时器添加到事件处理循环中
 [[NSRunLoop currentRunLoop] addTimer:self.paintingTimer forMode:NSDefaultRunLoopMode];
//停止时钟

[self.timer invalidate];

 

你可能感兴趣的:(开启关闭⏲️)