一、NSTimer

1. 创建方法

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(action:) userInfo:nil repeats:NO];

TimerInterval : 执行之前等待时间比如设置成1.0,就代表1秒后执行方法

target : 需要执行方法对象

selector : 需要执行方法

repeats : 是否需要循环

2. 释放方法

[timer invalidate];

timer = nil;

注意 : 调用创建方法后,target对象计数器会加1,直到执行完毕,自动减1。如果是循环执行的话,就必须手动关闭,否则可以执行释放方法。

3. 特点

存在延迟:不管是一次性的还是周期性的timer的实际触发事件时间,都会与所加入的RunLoop和RunLoop Mode有关,如果此RunLoop正在执行一个连续性的运算timer就会被延时出发。重复性的timer遇到这种情况,如果延迟超过了一个周期,则会在延时结束后立刻执行,并按照之前指定的周期继续执行。

必须加入Runloop使用上面的创建方式,会自动timer加入MainRunloop的NSDefaultRunLoopMode中。如果使用以下方式创建定时器,就必须手动加入Runloop:

NSTimer *timer = [NSTimer timerWithTimeInterval:5 target:self selector:@selector(timerAction) userInfo:nil repeats:YES];

[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];

原文地址:https://blog.csdn.net/qq_43441647/article/details/128673386

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_44558.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注