NSTimer初始化器接受调用方法逻辑之间的间隔作为它的其中一个参数,预设一秒执行30次。CADisplayLink默认每秒运行60次,通过它的frameInterval属性改变每秒运行帧数,如设置为2,意味CADisplayLink每隔一帧运行一次,有效的逻辑每秒运行30次。
此外,NSTimer接受另一个参数是否重复,而把CADisplayLink设置为重复(默认重复?)直到它失效。
还有一个区别在于,NSTimer一旦初始化它就开始运行,而CADisplayLink需要将显示链接添加到一个运行循环中,即用于处理系统事件的一个Cocoa Touch结构。
NSTimer 我们通常会用在背景计算,更新一些数值资料,而如果牵涉到画面的更新,动画过程的演变,我们通常会用CADisplayLink。
但是要使用CADisplayLink,需要加入QuartzCore.framework及#import
NSTimer
@interface ViewController : UIViewController
{
NSTimer *theTimer; //声明
}
//使用
float theInterval = 1.0 / 30.0f; //每秒调用30次
theTimer = [NSTimer scheduledTimerWithTimeInterval:theInterval target:self selector:@selector(MyTask) userInfo:nil repeats:YES];
//停用
[theTimer invalidate];
theTimer = nil;
CADisplayLink,需要加入QuartzCore.framework及#import
if(theTimer == nil)
{
theTimer = [CADisplayLink displayLinkWithTarget:self selector:@selector(MyTask)];
theTimer.frameInterval = 2;
[theTimer addToRunLoop: [NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
}
//停用
[theTimer invalidate];
theTimer = nil;
原文:
http://blog.sina.com.cn/s/blog_76550fd70101dfnj.html
分享到:
相关推荐
这份"IOS应用源码——timer.rar"压缩包包含了一个关于iOS计时器使用的示例项目,我们可以从中学习到如何在Objective-C或者Swift中有效地使用NSTimer和CADisplayLink。 首先,我们要了解iOS中的两种主要计时器类型:...
例如,通过设置RunLoop模式和观察者,可以精确控制NSTimer和CADisplayLink等定时器的执行,避免不必要的计算,从而优化性能。 "NSTimer、CADisplayLink、GCD 三种定时器的用法 - CSDN博客.html"则提到了iOS中常见的...
**CADisplayLink**是iOS和macOS开发中的一个重要概念,它是苹果提供...在实践中,我们应尽量利用CADisplayLink来替代传统的NSTimer或其他定时器,特别是在涉及到视图动画的场景下,因为它们无法提供相同的性能和精度。
下面将详细探讨`NSTimer`的工作原理、创建方法、常见用法以及注意事项。 ### NSTimer的工作原理 `NSTimer`并不是一个线程安全的类,它并不直接执行代码,而是将触发的消息放入运行循环(Run Loop)中。运行循环会...
此外,为了实现平滑的动画效果,我们需要掌握NSTimer和CADisplayLink的使用。NSTimer可以定时触发更新,而CADisplayLink则会在每次屏幕刷新时调用指定的回调,这样可以确保动画的流畅性,特别是在处理高频率更新如...
RDRIntermediateTarget 一个项目,演示如何使用Objective-C的消息传递功能来防止由于与NSTimer , NSThread或CADisplayLink实例进行交互而导致的保留周期。介绍您可能已经知道, NSTimer , NSThread和CADisplayLink...
3. **实时更新**:为了使时间显示动态更新,自定义视图可能使用NSTimer或CADisplayLink来定时刷新界面。 4. **交互性**:如果应用支持用户交互,例如点击马赛克块来切换时间,那么可能还需要实现触摸事件处理。 ...
为了实现自动滚动,我们可以使用NSTimer或者CADisplayLink。这两种工具可以定期执行指定的代码块,例如每秒滚动到下一张图片。设置一个定时器,然后在回调函数中更新ScrollView的contentOffset,使其平滑地滚动到下...
本篇文章将深入探讨`CADisplayLink`的工作原理、使用方法以及如何利用它来优化应用性能。 首先,我们要理解`CADisplayLink`的核心特性:与屏幕刷新率同步。屏幕的刷新率通常是每秒60次,即60Hz,这意味着每一帧画面...
2. `updateTime()`: 这个方法可能被定期调用,例如通过NSTimer或者CADisplayLink,以实时更新时钟的显示。它会获取当前时间,然后计算出时针、分针和秒针的角度,以便在`draw(_ rect:)`中正确地绘制它们。 3. `...
这个时候我们就需要用到定时器,这里,我为大家推荐三种方法,分别是:NSTimer、CADisplayLink、GCD。接下来我就一一介绍它们的用法。希望能帮到大家。 一、NSTimer(一般用于定时的更新一些非界面上的数据) 1. 创建...
这是最基础的用法,但在UITableView中直接在Cell内部使用NSTimer时,会遇到一个问题。当用户滚动表格时,由于Cell被重用,定时器可能会停止工作。这是因为滑动过程中RunLoop模式切换至`UITrackingRunLoopMode`,而...
在iOS中,通常有两种类型的定时器:NSTimer和CADisplayLink。NSTimer是基于run loop的,而CADisplayLink是与屏幕刷新同步的,更适合需要高精度时间间隔的场景,例如倒计时。 1. **NSTimer**: - NSTimer不是线程...
相比NSTimer,CADisplayLink的优势在于它与屏幕刷新同步,确保每次回调时都能准确地对应一帧画面的绘制,因此动画效果更为流畅和精确。使用CADisplayLink可以避免因为系统原因导致的定时器延迟,提高用户体验。在...
3. **定时器和CADisplayLink**:为了实现定时自动滚动,可以使用NSTimer或CADisplayLink。NSTimer可以按照设定的时间间隔执行任务,而CADisplayLink更适用于与屏幕刷新同步的动画,确保滚动平滑无闪烁。 4. **...
这通常需要结合Core Animation和定时器(NSTimer或CADisplayLink)来更新时钟的指针或数字显示。例如,你可以使用CADisplayLink每秒触发一次回调,然后在回调中更新时钟视图的状态,实现指针的转动或者数字的切换。 ...
相对于NSTimer,CADisplayLink更适合处理动画和连续更新的场景。 5. **动画(UIView Animation)**:如果你想添加过渡动画,如淡入淡出效果,可以使用UIView的animate(withDuration:animations:)方法来实现,这将使...
同时,我们可以使用NSTimer或者CADisplayLink来定时更新UILabel的text属性,从而实现文本的滚动播放。 如果要滚动的文本来自多个行,我们可以创建多个UILabel或者使用UITextView,然后通过调整其frame或...
在iOS中,你可以使用CADisplayLink或NSTimer来创建定时器,每隔一定时间更新视图的位置。 描述中提到的“视图加载”,这是iOS开发的基础,一般使用storyboard或代码创建并加载视图。在Swift或Objective-C中,你可以...