1、要是用一个定时器,首先要定义一个定时器:

@property(strong,nonatomic)NSTimer *myTimer;//定时器

2、初始化,初始化有两种方式:

第一种:

+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;

第二种:

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;

这两种初始化方式是有区别的:假如你用第一种就要自己将这个计时器加入主循环中,否则不会调用selector后面的方法,但是第二种就是在初始化一个定时器的同时直接将这个定时器加入主循环,所以并不用自己添加,下面举例:

第一种示例:

//初始化定时器

imer=[NSTimer timerWithTimeInterval:5 target:self selector:@selector(startLoction) userInfo:nil repeats:YES];

在初始化之后并不会调用,在添加下面这句将定时器加入主循环中的代码5秒才开始调用startLocation方法,又要repeats:YES,所以这里是循环调用,假如NO只调用一次。

//将定时器加入主循环中

[NsRunloop mainRunLoop] addTimer:_myTimer forMode:NsDefaultRunLoopMode];

//初始化定时器

imer=[NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(startLocation) userInfor:nil repeats:YES];

这种方式就是该定时器将在初始化时指定的timeInterval秒后自动触发(也就是在这句代码写完的后5秒循环调用startLocation方法)。

3、假如要立即开始:

//开启定时器

[_myTimer setFireDate:[NSDate distantPast]];

在重复执行的定时器中调用此方法后立即触发该定时器,但不会中断其之前执行的计划;(也就是在立即调用后,5秒之后又会调用启动定位的方法)

在不重复执行的定时器中调用此方法,立即触发后,就会是这个定时器实效。(立即调用完就结束)

4、要想实现:先停止,然后在某种情况下在此开启运行timer,可以使用下面的方法:

首先关闭定时器不能使用上面的方法,应该使用下面的方法

关闭定时器:

//关闭定时器

[_myTimer setFierDate:[NSDate distantFuture]];

5、取消定时器:

//取消定时器

[_myTimer invalidate];

_myTimer = nil;

停止timer的运行,这个是永久的停止,这也是唯一一个可以将计时器从runloop中移除的方法。

这里要注意一下:

NSTimer可以精确到50-100毫秒

NSTimer不是绝对准确的,而且中间耗时或阻塞错过下一个执行点,那么久pass继续执行其他的计划。

转载于:https://www.cnblogs.com/qiangzheVSruozhe/p/6839788.html

36、NSTimer使用详解-开启、关闭、移除相关推荐

  1. 36 张图详解应用层协议:网络世界的最强王者

    上帝视角 应用层 我们前面介绍过 TCP/IP 模型的下三层,分别是网络接入层.网络层和传输层.它们都是为应用层服务的,传输应用层的各种数据,现在我们就来看看最高层的应用层. 应用层 在 TCP/IP ...

  2. MyBatis 缓存详解-开启二级缓存的方法

    第一步:在mybatis-config.xml 中配置了(可以不配置,默认是true): <setting name="cacheEnabled" value="t ...

  3. 36 张图详解 ARP :网络世界没有我,你哪也别想去

    上帝视角 初识 ARP 从网络分层上看,我们知道二层网络中,使用 MAC 地址进行传输,MAC 地址做为数据链路层的设备标识符. 二层网络 三层网络中,使用 IP 地址进行传输,IP 地址做为网络层的 ...

  4. 36 张图详解 DNS :网络世界的导航

    上帝视角 我们平时在访问网站时,不使用 IP 地址,而是网站域名.但是抓包发现:交互报文是以 IP 地址进行的.那么 IP 地址是从哪来的呢?这是因为 DNS 把网站域名自动转换为 IP 地址. 报文 ...

  5. 图文实战详解彻底关闭windows 10系统自带的windows defender的方法

    微软发布了windows 10的版本更新win10 1903,相信很多喜欢尝鲜的小伙伴们都迫不及待的升级更新了,1903带来了新的功能和新的体验,比如登录界面毛玻璃效果,全新的windows主题,Co ...

  6. 端口详解 | 开启端口 | 关闭端口

    在网络技术中,端口(Port)大致有两种意思: 一是物理意义上的端口,比如,ADSL Modem.集线器.交换机.路由器用于连接其他网络设备的接口,如RJ-45端口.SC端口等等. 二是逻辑意义上的端 ...

  7. Redis配置文件redis.config详解以及关闭Redis服务

    redis.config位于redis的解压包目录下,如下图 我们一般把该配置文件copy到我们的安装目录下,也就是与我们的bin目录同级 接下来我们就可以对该配置文件进行修改,这里我们修改三个位置 ...

  8. 36张图详解网络基础知识

    前言 网络协议 我们用手机连接上网的时候,会用到许多网络协议.从手机连接 WiFi 开始,使用的是 802.11 (即 WLAN )协议,通过 WLAN 接入网络:手机自动获取网络配置,使用的是 DH ...

  9. Win10 Win11关闭内核隔离的方法【详解】关闭该功能有效提升游戏性能

    针对于不少爱玩游戏的客户,关闭该功能能有效提升游戏性能,在微软系统中有一个叫内核隔离经常会和一些游戏发生冲突,还会导致一些应用程序无法使用,因此我们就需要关闭它,具体操作步骤如下,请看图解. 首先,按 ...

最新文章

  1. python3字符串方法_python3
  2. Hadoop动态扩容,增加节点
  3. java求完数(完全数 完美数)
  4. 360更新补丁一直提示正在安装_远程利用POC公布|CVE20200796:微软发布SMBv3协议“蠕虫级”漏洞补丁通告...
  5. linux文件i节点,深入理解linux中i节点(inode)
  6. Android学习小Demo(11)一个显示行线的自定义EditText
  7. Linux下编写 makefile 详细教程
  8. oracle11g的adg需要付费嘛,Oracle11g ADG 搭建
  9. 一次搞定this和闭包
  10. PCB绘图要点QA汇总
  11. 实验2 网络扫描--Nmap与X-Scan
  12. PPT转换为PDF后,图片背景变成了黑色的解决方法
  13. 求职互联网技术岗应届生面试必备技巧分享
  14. PGP在加密技术中的应用
  15. python技巧:将文件夹下的文件遍历,保留特定文件,删除其他文件
  16. 推荐一个多端的开发框架uni-app
  17. 侍魂胧月传说显示服务器满了,侍魂胧月传说满级之后做什么 满级每日必做任务详解[多图]...
  18. -XX:CMSInitiatingOccupancyFraction和-XX:+UseCMSInitiatingOccupancyOnly参数
  19. arndale octa开发板编译u-boot和kernel
  20. 仿新浪微博,提示可输入的字数限制 textarea

热门文章

  1. Siemens ug二次开发---Snap
  2. winfrom下,如何实现类似QQ右下角弹出新闻
  3. 运行TensorFlow
  4. while循环(包含死循环、while嵌套)
  5. 吉林大学java期末试卷_吉大18年9月《JAVA程序设计》作业考核试题-0001
  6. 网络批量后修改服务器,企业网络批量安装服务器搭建案例
  7. vue 表格中有列需要异步加载_vue.js表格分页,ajax异步加载数据
  8. string字符串数字自增_常见的字符串操作
  9. c语言lr分析器的设计与实现_Python3设计模式四 :状态模式
  10. 实时音视频直播带货中影响用户体验的Bug根因