时间:NSTimer,代码时运行时间段,
2016-04-17 20:05
399 查看
一:NSTimer
当时间间隔>1s是用NSTimer;方法:
[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(timeChange) userInfo:nil repeats:YES];
关于内存释放
如果我们启动了一个定时器,在某个界面释放前,将这个定时器停止,甚至置为nil,都不能是这个界面释放,原因是系统的循环池中还保有这个对象。所以我们需要这样做:
[b]雪花定时器[/b]
- (void)awakeFromNib
{
// 添加定时器 0.1 0.35
// [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(timeChange) userInfo:nil repeats:YES];
// 一般如果定时器调用频率非常高,<1s,通常不会使用NSTimer,NSTimer调用优先级不高,NSTimer在重绘的时候也不要使用
CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(setNeedsDisplay)];
[link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
}
//- (void)timeChange
//{
// // setNeedsDisplay 这个方法并不会马上调用 drawRect方法,仅仅是给当前视图做一个重绘标记,当下一次屏幕刷新的时候就会调用drawRect方法
// [self setNeedsDisplay];
//}
static int _snowY = 0;
- (void)drawRect:(CGRect)rect {
// Drawing code
UIImage *image = [UIImage imageNamed:@"雪花"];
[image drawAtPoint:CGPointMake(50, _snowY)];
_snowY += 10;
if (_snowY > rect.size.height) {
_snowY = 0;
}
}
二:时间段.--计算一段代码的效率
1s = 1000ms = 10^3ms(毫秒) = 10^6μs (微秒) = 10^9ns (纳秒) = 10^12ps (皮秒) = 10^15fs (飞秒)//当前时间: double date_s = CFAbsoluteTimeGetCurrent();for (int i = 0; i <1000; i++) { NSLog(@"I Love You!!!"); } //时间差. double date_current = CFAbsoluteTimeGetCurrent() - date_s; NSLog(@" ForLoop Time: %f ms",date_current * 1000);
相关文章推荐
- SVN代码管理 备份与还原
- Java内部类的作用
- VPTR和VTABLE和构造函数与继承
- 20145205 《Java程序设计》第7周学习总结
- Python在图像处理方向的基本配置
- 数相乘、大数相加、大数相减Java版本
- python查找并删除相同文件-UNIQ File-wxPython版本
- c/c++中求取字符串,数组,一块内存的长度
- JAVA 注解Annotation入门
- Java NIO系列教程(二)
- RTP 时间戳的处理
- python模拟登陆知乎并爬取数据
- 第一个java程序解析
- 关于循环重复数字的相加 C语言越来越好玩
- JAVA IO-管道流
- java解析XML几种方式小结
- java解析XML几种方式小结
- java解析XML几种方式小结
- java解析XML几种方式小结
- java解析XML几种方式小结