IOS开发-OC学习-NSTimer的使用
上一篇博客中在改变属性值的时候使用了timer进行自动改变。关于NSTimer的更详细的用法如下:
定义一个NSTimer类型的timer,和一个count,其中timer是定时器,count是计数的,用来统计timer发生了几次。
NSTimer * timer;
NSInteger count;
计数值count初始化,timer初始化:时间间隔设定、触发函数、是否重复等:
count = ;
timer = [NSTimer scheduledTimerWithTimeInterval: target:self selector:@selector(haha:) userInfo:nil repeats:YES];
定时器的selector函数:(设置self的两个属性,并在每次调用之后给count+1,用来计数定时器触发的次数。函数中使用kvc设置self 的属性值:
-(void)haha:(id)sender{
NSString *nameString = [NSString stringWithFormat:@"name%d",arc4random()%];
// self.ticketName = string;
NSString *priceString =[NSString stringWithFormat:@"%d",arc4random()%];
[self setValue:nameString forKey:@"ticketName"];
[self setValue:priceString forKey:@"ticketPrice"];
count++;
}
在监测到self的属性值变化时做出如下响应 1 //kvo,在观察的值变化的时候进行执行响应的函数 2 -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{
// 如果定时次数小于10,执行打印
if (count!=) {
if ([keyPath isEqualToString:@"ticketName"]) {
//通过change打印
NSLog(@"ticketName的值被改变成了%@",[change objectForKey:@"new"]);
// NSLog(@"ticketName的值被改变成了%@",self.ticketName);//通过点语法打印
}else{ NSLog(@"ticketPrice的值被改变成了%@",[change objectForKey:@"new"]);//通过change打印
// NSLog(@"ticketPrice的值被改变成了%@",self.ticketPrice);//通过点语法打印
}
}else{//如果定时器定时次数大于10,使定时器失效
[timer invalidate];
if([timer isValid]{
// NSLog(@"定时器失效");
}
NSLog(@"%d",[timer isValid]); } }
如果count小于10,那么执行打印self属性值的分支,如果count等于10,那么使用[timer invalidate];函数来失能timer定时器,并且使用[timer isValid];去判断timer是否已经失能,如果失能,打印出定时器实效,并在最后打印出[timer isValid]的值。
IOS开发-OC学习-NSTimer的使用的更多相关文章
- iOS开发-OC语言 (一)oc数据类型
分享一套以前学习iOS开发时学习整理的资料,后面整套持续更新: oc数据类型 数据类型:基本数据类型.指针数据类型 基本数据类型:数值型.字符型(char).布尔型.空类型(void) 指针数据类型: ...
- iOS开发如何学习前端(2)
iOS开发如何学习前端(2) 上一篇成果如下. 实现的效果如下. 实现了一个横放的<ul>,也既iOS中的UITableView. 实现了当鼠标移动到列表中的某一个<li>,也 ...
- iOS开发如何学习前端(1)
iOS开发如何学习前端(1) 我为何学前端?因为无聊. 概念 前端大概三大块. HTML CSS JavaScript 基本上每个概念在iOS中都有对应的.HTML请想象成只能拉Autolayout或 ...
- iOS开发OC基础:Xcode中常见英文总结,OC常见英文错误
在开发的过程中难免会遇到很多的错误,可是当看到系统给出的英文时,又不知道是什么意思.所以这篇文章总结了Xcode中常见的一些英文单词及词组,可以帮助初学的人快速了解给出的提示.多练习,就肯定能基本掌握 ...
- 关于iOS开发的学习
关于iOS开发的学习,打个比方就像把汽车分解: 最底层的原料有塑料,钢铁 再用这些底层的东西造出来发动机,座椅 最后再加上写螺丝,胶水等,把汽车就拼起来了 iOS基本都是英文的资料, ...
- IOS开发---菜鸟学习之路--(二十二)-近期感想以及我的IOS学习之路
在不知不觉当中已经写了21篇内容 其实一开始是没有想些什么东西的 只是买了Air后 感觉用着挺舒服的,每天可以躺在床上,就一台笔记本,不用网线,不用电源,不用鼠标,不用键盘,干干脆脆的就一台笔记本. ...
- IOS开发---菜鸟学习之路--(一)
PS(废话): 看了那么多的博客文章,发现大部分人都一直在强调写技术博客的重要性,索性自己也耐着性子写写看吧. 写博客的重要性之类的说明,我就不做复制黏贴的工作了.因为自己没有写过多少,所也不清楚是不 ...
- iOS开发RunLoop学习:一:RunLoop简单介绍
一:RunLoop的简单介绍 #import "ViewController.h" @interface ViewController () @end @implementatio ...
- iOS开发RunLoop学习:四:RunLoop的应用和RunLoop的面试题
一:RunLoop的应用 #import "ViewController.h" @interface ViewController () /** 注释 */ @property ( ...
- iOS开发——OC篇&常用关键字的使用与区别
copy,assign,strong,retain,weak,readonly,readwrite,nonatomic,atomic,unsafe_unretained的使用与区别 最近在学习iOS的 ...
随机推荐
- HDU 1269 迷宫城堡 tarjan算法求强连通分量
基础模板题,应用tarjan算法求有向图的强连通分量,tarjan在此处的实现方法为:使用栈储存已经访问过的点,当访问的点离开dfs的时候,判断这个点的low值是否等于它的出生日期dfn值,如果相等, ...
- JavaBean,List,Map转成json格式
public class User { private String username; private String password; public String getUsername() { ...
- PHP中require()文件包含的正确用法
以前看一些PHP框架源码的时候,很奇怪在文件包含的时候,会用dirname(__FILE__)来拼凑文件路 径,不知道这样做有什么好处,后来终于发现了其中的缘由. 我们来看一个简单的例子: 有a,b, ...
- JSP标准标签库(JSTL)--国际化标签库 fmt
JSTL中使用fmt.tld作为格式化标签库的定义文件 No. 功能分类 标签名称 描述 1 国际化标签 <fmt:setLocale> 设置一个全局的地区代码 2 <fmt:req ...
- abstract class 与interface
一.抽象类(absteact class) 特点: 1.抽象方法只作说明,而不包含实现,可以看成是没有实现体的虚方法 2.抽象类不能被实例化.除此之外,具有类的其他特性 3.抽象类可以但不是必须有抽象 ...
- windows加固方案
1 账号管理.认证授权.... 1 1.1 账号... 1 1.2 口令... 1 1.3 授权... 2 2 日志配置操作.... 3 3 IP ...
- C#获取客服端ip和用户名
. 在asp.Net中专用属性: 获取服务器电脑名:page.server.manchinename 获取用户信息:page.user 获取客户端电脑名:page.request.userhostna ...
- 关于tomcat配置MyEclipse项目的配置代码
例如:<Context path="/shis" docBase="E:\Genuitec\Workspaces\MyEclipse 8.6\zwfw_platfo ...
- zf-关于通知公告显示问题
1 公告结束日期超过当前时间是不能在通知公告上显示出来的 2 无限制时间的公告也是要在通知公告上显示出来的 于是我在后台实现类增加了如下代码 需要注意的是 当初解决第一个问题的时候增加了一个AND 当 ...
- 2016青岛网络赛 Barricade
Barricade Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Proble ...