36、NSTimer使用详解-开启、关闭、移除
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继续执行其他的计划。
36、NSTimer使用详解-开启、关闭、移除的更多相关文章
- iOS NSTimer使用详解 开启、关闭、移除
定时器定时器详解ios定时器关闭定时器NSTimer 一,要使用一个定时器首先要定义一个定时器: @property (strong, nonatomic) NSTimer *myTimer;//定时 ...
- 重新想象 Windows 8 Store Apps (36) - 通知: Tile 详解
[源码下载] 重新想象 Windows 8 Store Apps (36) - 通知: Tile 详解 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 通知 Tile ...
- IOS中的NSTimer定时器详解
/* 在IOS中有多种定时器,这里我对NSTimer定时器做了一个简单的介绍.如果你是小白,你可能会从这篇文章中学习到一些知识,如果你是大牛,请别吝啬你的评论,指出我的不足,你的质疑是对我最大的帮助. ...
- python标准库介绍——36 popen2 模块详解
==popen2 模块== ``popen2`` 模块允许你执行外部命令, 并通过流来分别访问它的 ``stdin`` 和 ``stdout`` ( 可能还有 ``stderr`` ). 在 pyth ...
- 36、TreeSet详解
TreeSet是SortedSet接口的实现类,TreeSet可以保证元素处于排序状态.与HashSet相比,TreeSet还提供了如下几个而外的方法: 1).Comparator comparato ...
- Nginx开启Gzip详解
最近生产上发生了一些问题,原先所有的静态资源文件都是经过gzip压缩的,然而这几天突然都没有压缩了,经过一顿排查,发现是Nginx的配置有问题,借此机会详细了解了Nginx的Gzip配置. 1. Ng ...
- nginx之旅(第一篇):nginx下载安装、nginx启动与关闭、nginx配置文件详解、nginx默认网站
一.nginx下载安装 版本nginx 1.15.5 系统环境centos7.5(本机ip192.168.199.228) 关闭selinux 和防火墙firewall 1.下载 wget http: ...
- CentOS 7.5关闭FireWall 和SELinux图文详解
CentOS 7.5关闭FireWall 和SELinux图文详解 1. 环境 CentOS 7.5 2. 关闭FireWall和SELinux 2.1 FireWall 使用systemctl st ...
- 开启PHP exif扩展方法详解
服务器配置说明: 1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号2.在php.ini文件中找到;extension=php_mbstring.dll,去掉 ...
随机推荐
- java虚拟机的原理
所谓虚拟机,就是一台虚拟的机器.它是一款软件,用来执行一系列虚拟计算机指令,大体上虚拟机可以分为系统虚拟机和程序虚拟机,Visual Box .Vmare就属于系统虚拟机.他们完全是对物理计算机的仿真 ...
- f5 2017.09.03故障
1.下午14点50左右有同事反应epm等系统登录有问题.自测登录也是有同样的报错. 2.测试发现内部IP直接访问正常,但是访问f5的vip的方式访问不了.此时oa.邮件等系统也开始有同事发现故障. 3 ...
- 使用pyqt写了一个检查大数据环境的gui
通过pyqt做了一个大数据最佳实践检查的gui界面 1.首先是需要用到的模块 from PyQt5.QtWidgets import QApplication from PyQt5.QtWidgets ...
- swift - 接入听云监测 - 问题
1. 正常下载 探针SDK:https://report.tingyun.com/mobile-web/#/onlyHeader/sdkDownload 2.按步骤接入 ,添加库啊,什么的URLSc ...
- ubuntu下安装php
一.下载PHP7的最新版源码 php7.0.9 下载地址 http://php.net/get/php-7.0.9.tar.gz/from/a/mirror 二.解压 tar -zxf /tmp/ph ...
- jquery滚动事件
滚动到一定高度: $(window).scroll(function(){ var scrollTop = $(document).scrollTop(); && scrollTop ...
- initialize flexnet service failed error code 50003
网络上下载回来的绿色版Xshell/Xftp在每次启动时都会报这个错,通过FlexNet Licensing Service 安装与卸载脚本了解到,程序 启动的时候会检查FlexNet Licensi ...
- Vmware黑屏解决方法
此原因是显卡性能差,显示选项开启了3D加速导致的,具体修改步骤: 英文路径:VM->Settings->Hardware->Display 在右面的内容栏中将 Accelerate ...
- 11.1JS笔记
1.js的数据类型分为基本和引用,基本(string.undefined.null.number,boolean),引用(object-->array.function.json等) 2.基本数 ...
- auth 认证模块
. auth认证模块: http://www.cnblogs.com/liwenzhou/p/9030211.html auth模块的知识点: . 创建超级用户 python manage.py cr ...