iOS定时器总结

在iOS工程中经常要使用定时器来做一些每隔一定时间就要进行重复操作的内容,或者有时需要经过一定时间做一些事件。一般这个时候都会使用定时器来完成这个事件。

定时器的创建

定时器的创建有两种方式

/**
 *  @param NSTimeInterval 间隔时间
 *  @param target 触发对象
 *  @param selector 调用方法
 *  @param userInfo 传递内容
 *  @param repeats 是否重复 YES:重复 NO:只执行一次
 */
//方式一:直接创建(已经加入到RunLoop中)
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerClike) userInfo:nil repeats:YES];

//方式二:创建后添加到RunLoop中
self.timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(timerClike) userInfo:nil repeats:YES];
//添加早RunLoop中
[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSDefaultRunLoopMode];

//这样执行的方法在下一次中才会执行,如果想让方法立即执行要添加
[self.timer fire];

控制定时器

//定时器开
[self.timer setFireDate:[NSDate date]];
//或者 都可以
[self.timer setFireDate:[NSDate distantPast]];

//定时器关
[self.timer setFireDate:[NSDate distantFuture]];

//定时器销毁 销毁后只能重新创建不能再开启
[self.timer invalidate];

定时器传值和区分

//在一个界面中创建两个定时器 传值和区分可以使用它们的userInfo来实现

self.timerOne = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerClike:) userInfo:@"123" repeats:YES];

self.timerTwo = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerClike:) userInfo:@"abc" repeats:YES];

//传一个NSTimer 用timer.userInfo来区分
-(void)timerClike:(NSTimer *)timer
{
    NSLog(@"timerClike_%@",timer.userInfo);
}

在iOS中有一个定时器与屏幕的刷新时间一致,就是CADisplayLink(无需设置刷新时间,屏幕刷新时间一致一秒60次)

//创建
CADisplayLink *displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(timerClike:)];
//添加到运行循环中
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

//销毁
[displyLink invalidate];
displyLink = nil;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值