`
lizaochengwen
  • 浏览: 659592 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

NSTimer和CADisplayLink的用法

 
阅读更多
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应用源码——timer.rar"压缩包包含了一个关于iOS计时器使用的示例项目,我们可以从中学习到如何在Objective-C或者Swift中有效地使用NSTimer和CADisplayLink。 首先,我们要了解iOS中的两种主要计时器类型:...

    iOS开发优秀博客网页归档

    例如,通过设置RunLoop模式和观察者,可以精确控制NSTimer和CADisplayLink等定时器的执行,避免不必要的计算,从而优化性能。 "NSTimer、CADisplayLink、GCD 三种定时器的用法 - CSDN博客.html"则提到了iOS中常见的...

    CADisplayLink

    **CADisplayLink**是iOS和macOS开发中的一个重要概念,它是苹果提供...在实践中,我们应尽量利用CADisplayLink来替代传统的NSTimer或其他定时器,特别是在涉及到视图动画的场景下,因为它们无法提供相同的性能和精度。

    NSTimer定时器

    下面将详细探讨`NSTimer`的工作原理、创建方法、常见用法以及注意事项。 ### NSTimer的工作原理 `NSTimer`并不是一个线程安全的类,它并不直接执行代码,而是将触发的消息放入运行循环(Run Loop)中。运行循环会...

    自己做的一个仿iPhone 下载App 动画效果. Mac 下的哦

    此外,为了实现平滑的动画效果,我们需要掌握NSTimer和CADisplayLink的使用。NSTimer可以定时触发更新,而CADisplayLink则会在每次屏幕刷新时调用指定的回调,这样可以确保动画的流畅性,特别是在处理高频率更新如...

    RDRIntermediateTarget:防止由NSTimer,NSThread或CADisplayLink实例引起的保留周期的替代方法

    RDRIntermediateTarget 一个项目,演示如何使用Objective-C的消息传递功能来防止由于与NSTimer , NSThread或CADisplayLink实例进行交互而导致的保留周期。介绍您可能已经知道, NSTimer , NSThread和CADisplayLink...

    IOS应用源码——自定义的马赛克时间风格.zip

    3. **实时更新**:为了使时间显示动态更新,自定义视图可能使用NSTimer或CADisplayLink来定时刷新界面。 4. **交互性**:如果应用支持用户交互,例如点击马赛克块来切换时间,那么可能还需要实现触摸事件处理。 ...

    ScrollViewLoop

    为了实现自动滚动,我们可以使用NSTimer或者CADisplayLink。这两种工具可以定期执行指定的代码块,例如每秒滚动到下一张图片。设置一个定时器,然后在回调函数中更新ScrollView的contentOffset,使其平滑地滚动到下...

    swift-CADisplayLink一定时器其根本利用刷帧和屏幕频率一样来重绘渲染页面.

    本篇文章将深入探讨`CADisplayLink`的工作原理、使用方法以及如何利用它来优化应用性能。 首先,我们要理解`CADisplayLink`的核心特性:与屏幕刷新率同步。屏幕的刷新率通常是每秒60次,即60Hz,这意味着每一帧画面...

    IOS应用源码——圆形时钟.rar

    2. `updateTime()`: 这个方法可能被定期调用,例如通过NSTimer或者CADisplayLink,以实时更新时钟的显示。它会获取当前时间,然后计算出时针、分针和秒针的角度,以便在`draw(_ rect:)`中正确地绘制它们。 3. `...

    iOS开发定时器的三种方法分享

    这个时候我们就需要用到定时器,这里,我为大家推荐三种方法,分别是:NSTimer、CADisplayLink、GCD。接下来我就一一介绍它们的用法。希望能帮到大家。 一、NSTimer(一般用于定时的更新一些非界面上的数据) 1. 创建...

    iOS之UITableView计时器的实现方式总结(NSTimer、DispatchSource、CADisplayLink)

    这是最基础的用法,但在UITableView中直接在Cell内部使用NSTimer时,会遇到一个问题。当用户滚动表格时,由于Cell被重用,定时器可能会停止工作。这是因为滑动过程中RunLoop模式切换至`UITrackingRunLoopMode`,而...

    ios-倒计时.zip

    在iOS中,通常有两种类型的定时器:NSTimer和CADisplayLink。NSTimer是基于run loop的,而CADisplayLink是与屏幕刷新同步的,更适合需要高精度时间间隔的场景,例如倒计时。 1. **NSTimer**: - NSTimer不是线程...

    ios-无线滚动label.zip

    相比NSTimer,CADisplayLink的优势在于它与屏幕刷新同步,确保每次回调时都能准确地对应一帧画面的绘制,因此动画效果更为流畅和精确。使用CADisplayLink可以避免因为系统原因导致的定时器延迟,提高用户体验。在...

    IOS应用源码之自动滚动demo .rar

    3. **定时器和CADisplayLink**:为了实现定时自动滚动,可以使用NSTimer或CADisplayLink。NSTimer可以按照设定的时间间隔执行任务,而CADisplayLink更适用于与屏幕刷新同步的动画,确保滚动平滑无闪烁。 4. **...

    ios 动画 时钟 波浪

    这通常需要结合Core Animation和定时器(NSTimer或CADisplayLink)来更新时钟的指针或数字显示。例如,你可以使用CADisplayLink每秒触发一次回调,然后在回调中更新时钟视图的状态,实现指针的转动或者数字的切换。 ...

    自动滚动demo.zipIOS应用例子源码下载

    相对于NSTimer,CADisplayLink更适合处理动画和连续更新的场景。 5. **动画(UIView Animation)**:如果你想添加过渡动画,如淡入淡出效果,可以使用UIView的animate(withDuration:animations:)方法来实现,这将使...

    ios-Swift 滚动文字和图片,一行两行或多行.zip

    同时,我们可以使用NSTimer或者CADisplayLink来定时更新UILabel的text属性,从而实现文本的滚动播放。 如果要滚动的文本来自多个行,我们可以创建多个UILabel或者使用UITextView,然后通过调整其frame或...

    IOS新手彩虹色带自动移动源代码

    在iOS中,你可以使用CADisplayLink或NSTimer来创建定时器,每隔一定时间更新视图的位置。 描述中提到的“视图加载”,这是iOS开发的基础,一般使用storyboard或代码创建并加载视图。在Swift或Objective-C中,你可以...

Global site tag (gtag.js) - Google Analytics