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的 ...
随机推荐
- 8--UI 初步认识 简易计算器
UI是App的根基:一个App应该是先有UI界面,然后在UI的基础上增加实用功能(2)UI相对简单易学:UI普遍是学习过程中最简单的一块,能快速拥有成就感和学习兴趣(3)UI至关重要:开发中的绝大部分 ...
- android性能优化优秀文章
郭霖最近整理的文章: 合理管理内存 分析编码过程中如何避免过多内存占用,以及如何实现高性能的内存使用. 尽可能使用intentService; 当界面不可见时释放内存; 当内存紧张时释放内存; 避免b ...
- linux服务器性能状态查看
vmstat结果内容的解释 Vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu---- ...
- L10,not for jazz
expressions: It is called a clavichord这被称为古钢琴 a friend of my father's我父亲的朋友 words: musical,adj,音乐的 ...
- .NET中公共变量与属性的区别
在我们的程序中经常会出现以下的代码: 如: 成员变量 public string Name; 或者用属性 private string name ...
- kafka configuration
http://kafka.apache.org/08/configuration.html
- do{...}while(0)的妙用(转)
源:http://www.cnblogs.com/lizhenghn/p/3674430.html 在学习第一门编程语言时,就已经介绍了顺序分支.条件分支.循环分支.比如循环分支有for.while. ...
- 使用virsh命令创建KVM虚拟机快照
查看虚拟机所在主机和虚拟机名称:[root@node-1 ~]# nova show a88dcf5d-c8b2-46a5-af27-a176d8235c9d|grep hyper| OS-EXT-S ...
- 基于心跳的socket长连接
http://coach.iteye.com/blog/2024444 基于心跳的socket长连接 博客分类: http socket 案例: 心跳: socket模拟网页的报文连接某个网站,创建t ...
- 开始学习MFC
<<对0基础MFC者的一点建议>>---------------------摘自某论坛lint2008的回复,不管对错,先看看. 因为上半年自己刚刚学了点MFC,算是对 ...