定时器(iOS)

NSTimer

注意:

  • 1、NSTimer应该是weak
    • 为什么NSTimer应该是weak,
      • 因为只要创建一个NSTimer对象, 该对象就会被主线程强引用
@property (weak, nonatomic) NSTimer *timer;
  • 2、scheduledTimerWithTimeInterval: 创建一个定时器, 并且立即可是计时, 系统就会自动将NSTimer添加到主线程中
   // 如果给userInfo赋值, 那么定时器调用的方法就必须接受参数, 并且接受的参数就是NSTimer
    // 只要调用scheduled方法创建一个NSTimer对象, 系统就会自动将NSTimer添加到主线程中
    self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextPage:) userInfo:@"cjp" repeats:YES];

   // 参数说明:
     scheduledTimerWithTimeInterval: 创建一个定时器, 并且立即可是计时
     TimeInterval: 间隔时间
     target: 调用谁的方法
     selector: 调用什么方法
     userInfo: 需要传递什么参数
     repeats: 是否重复
     每隔2.0秒调用一次self的nextPage方法, 并且不传递任何参数

  • 3、将定时器添加到主运行循环
    • NSRunLoopCommonModes模型:—> 就会进行页面其他操作,定时器不会受其影响
[[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
  • 4、关闭定时器 invalidate方法
    • NSTimer是一次性的, 只要invalidate之后就不能使用了
    • 只要调用invalidate方法, 系统就会将NSTimer从主线程移除, 并且销毁NSTimer对象

[self.timer invalidate];

你可能感兴趣的:(定时器(iOS))