美文网首页程序员
iOS定时器的三种方法

iOS定时器的三种方法

作者: Mr姜饼 | 来源:发表于2019-03-26 10:28 被阅读0次

说到定时器  也许大家并不陌生,可能大家都只是对NSTimer比较熟悉吧,那么久来为大家介绍另外两种不常见的方法吧

1.NSTimer(详细的就不给大家介绍了)

+ (NSTimer*)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation*)invocation repeats:(BOOL)yesOrNo;

+ (NSTimer*)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullableid)userInfo repeats:(BOOL)yesOrNo;

注意:上面俩方法创建的timer需要将timer注册到NSRunloop中才能开启定时器的功能

    [[NSRunLoop currentRunLoop] addTimer:timer:forMode:NSRunLoopCommonModes];

+ (NSTimer*)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullableid)userInfo repeats:(BOOL)yesOrNo;

+ (NSTimer*)scheduledTimerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation*)invocation repeats:(BOOL)yesOrNo;

ps:默认将timer添加到当前runloop中了,所有无需添加

2. dispatch_source_create()

简单地分为几个步骤 下面慢慢来讲解

注意:这里创建的timer并需要设置为全局属性,因为GCD会自动管理内存,当回收的时候,你发现timer不起作用,就很尴尬了😂

@property  (nonamatic , strong ) dispatch_source_t  timer;

  _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue());

    dispatch_source_set_timer(_timer, DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC, 1 * NSEC_PER_SEC );

    dispatch_source_set_event_handler(_timer, ^{

        flag ++;

        NSLog(@"flag = %d",flag);

    });

添加执行事件代码。

    dispatch_resume(_timer);

手动触发

3.CADisplayLink

CADispalyLink displayLink = [CADisplayLink displayLinkWithTarget:selfselector:@selector(handleDisplayLink:)];

 [displayLink addToRunLoop:[NSRunLoopcurrentRunLoop] forMode:NSDefaultRunLoopMode];  

较为精准,与屏幕刷新帧率同步,多用户视图渲染或绘图

相关文章

  • IOS 定时器总结

    转自: iOS中几种定时器 - 控制了时间,就控制了一切 定时器三种方法: NSTimerCADisplayLin...

  • iOS中的定时器

    点击这里>> cocoaChina: iOS中的定时器 iOS中定时器有三种,分别是NSTimer、CADispl...

  • iOS内存管理(1)-CADisplayLink、NSTimer

    iOS中三种定时器CADisplayLink、NSTimer和GCD定时器,我们就详尽的讲解一下三种定时器.在讲解...

  • iOS:NSTimer的几种创建方式

    在iOS开发中,经常会用到定时器,iOS中常用的定时器有三种:NSTimer,GCD,CADisplayLink。...

  • iOS Timer

    iOS开发中定时器经常会用到,iOS中常用的定时器有三种,分别是NSTime,CADisplayLink和GCD。...

  • iOS三大定时器

    iOS开发中定时器经常会用到,iOS中常用的定时器有三种,分别是NSTime,CADisplayLink和GCD。...

  • 【Swift】iOS中的定时器

    在iOS中我们常用的定时器有三种: Timer, CADisplayLink, DispatchSourceTim...

  • iOS GCD定时器的封装

    iOS中有三种定时器,NSTimer、CADisplayLink以及GCD。因为NSTimer和CADisplay...

  • 从定时器到RunLoop

    ios 常用的定时器有三种:NSTime,CADisplayLink和GCD。 NsTimer // 参数:Int...

  • iOS 定时器耗电探究

    iOS开发中的几种定时器 iOS开发中定时器实现方式大致有三种,一种是Timer实现,一种是通过GCD自己创建,另...

网友评论

    本文标题:iOS定时器的三种方法

    本文链接:https://www.haomeiwen.com/subject/zqwwvqtx.html