+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;
+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullableid)userInfo repeats:(BOOL)yesOrNo;
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullableid)userInfo repeats:(BOOL)yesOrNo;
//我用时一般都用这种方法,其他几种几乎没用。
self.timer=[NSTimerscheduledTimerWithTimeInterval:0.4target:selfselector:@selector(timer1)userInfo:nilrepeats:YES];
- (instancetype)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)ti target:(id)t selector:(SEL)s userInfo:(nullableid)ui repeats:(BOOL)repNS_DESIGNATED_INITIALIZER;
参数解读:1.参数解读
ti定时器从现在往后多久开始启动;
yesOrNo/rep定时器是否循环;
aTarget定时器的对象;
aSelector定时器出发的方法选择器;
userInfo/ui定时器带的参数信息;
2、timerWithTimeInterval这两个类方法创建出来的对象如果不用 addTimer: forMode方法手动加入主循环池中,将不会循环执行。并且如果不手动调用fair,则定时器不会启动。
3、scheduledTimerWithTimeInterval这两个方法不需要手动调用fair,会自动执行,并且自动加入主循环池。
4、init方法需要手动加入循环池,它会在设定的启动时间启动。
NSTimer的方法
- (void)fire;启动
- (void)invalidate;停止
NSTimer的属性
@property (copy)NSDate *fireDate;定时器的启动时间,常用来管理定时器的启动与停止,如下:
[self.timersetFireDate:[NSDatedistantFuture]];停止
[self.timersetFireDate:[NSDatedistantPast]];启动
@property (readonly)NSTimeInterval timeInterval;只读属性,获取定时器调用间隔时间
@propertyNSTimeInterval toleranceNS_AVAILABLE(10_9,7_0);设置误差范围
@property (readonly,getter=isValid)BOOL valid;只读属性,获取定时器是否
@property (nullable,readonly,retain)id userInfo;获取参数信息
NSTime的结合使用总结 常常出发此方式时不能够让她中断执行或者多次执行此方法,这是我们多使用人机交互来控制。