【问题标题】:How do I replace this NSTimer with a CADisplayLink?如何用 CADisplayLink 替换这个 NSTimer?
【发布时间】:2015-01-03 20:15:27
【问题描述】:

我意识到 CADisplayLink 更适合我当前项目的性质,但是,我不太清楚如何实现 CADisplayLink 并替换我的 NSTimer。

下面是我的 NSTimer 的代码

Movement = [NSTimer scheduledTimerWithTimeInterval:0.002 target:self selector:@selector(BarMoving)       userInfo:nil repeats:YES];

如何创建一个 CADisplayLink 来执行相同的功能但更高效?

【问题讨论】:

    标签: objective-c nstimer cadisplaylink


    【解决方案1】:

    创建事物:

    _displayLink = [CADisplayLink displayLinkWithTarget:self 
                       selector:@selector(BarMoving)];
    

    开始运行:

    [_displayLink addToRunLoop:[NSRunLoop mainRunLoop]
        forMode:NSDefaultRunLoopMode];
    

    ...只要该运行循环处于默认模式,这将导致您的显示链接在主运行循环(与主线程相关联,因此与主队列相关联)上发出对 BarMoving 的调用.因此,当用户用手指向下滚动滚动视图时,会暂停您的计时器。 NSTimer 具有相同的默认行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-18
      • 1970-01-01
      相关资源
      最近更新 更多