zoukankan      html  css  js  c++  java
  • iOS NSTimer

    1. 初始化方法

    有以下三种初始化方法:

      使用 scheduledTimerWithTimeInterval:invocation:repeats: 或者scheduledTimerWithTimeInterval:target:selector:userInfo:repeats: 这两个类方法创建一个timer并把它指定到一个默认的runloop模式中

      使用 timerWithTimeInterval:invocation:repeats: 或者 timerWithTimeInterval:target:selector:userInfo:repeats:这两个类方法创建一个timer的对象,没有把它指定到run loop中. (当创建之后,你必须手动的调用NSRunLoop下对应的方法 addTimer:forMode: 去将它制定到一个runloop模式中.)

      使用 initWithFireDate:interval:target:selector:userInfo:repeats: 方法分配并创建一个NSTimer的实例 (当创建之后,你必须手动的调用NSRunLoop下对应的方法 addTimer:forMode: 去将它制定到一个runloop模式中.)

     

    2. 触发timer

    可以通过初始化的轮询触发timer; 也可以手动触发,即使没有达到执行条件

    [timer对象 fire];

     

    3. 关闭、开启timer,是通过FireDate去设置的

    [timer对象 setFireDate:[NSDate distantFuture]]; // 开启

    [timer对象 setFireDate:[NSDate distantPast]]; // 关闭

    实际上,在初始化的方法  initWithFireDate:interval:target:selector:userInfo:repeats:  中,就可以通过控制参数FireDate 初始化"开启状态的Timer"或者"关闭状态的Timer"

    4. 删除timer

    [timer对象 invalidate];

    推荐在删除timer之前,判断一下待删除的timer是否在线程中,[timer对象 isValid] // 判断是否在线程中

    if ([timer对象 isValid] == YES) {

            [timer对象 invalidate];

            timer对象 = nil;

        }

    5. 定时器暂停、开启、继续的方法,是通过fireDate控制的

    [timer setFireDate:[NSDate date]];  //  继续

    [timer setFireDate:[NSDate distantPast]];   //  开启

    [timer setFireDate:[NSDate distantFuture]]; //  暂停

    6. test

    - (void)viewDidLoad {

        [super viewDidLoad];

        // 初始化方法一

        [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(timerStudy) userInfo:nil repeats:YES];

       

      /* 初始化方法二

        NSTimer *timer = [NSTimer timerWithTimeInterval:2.0 target:self selector:@selector(timerStudy) userInfo:nil repeats:YES];

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

         */

        

        /* 初始化方法三

        NSTimer *timer2 = [[NSTimer alloc]initWithFireDate:[NSDate  distantFuture] interval:2.0 target:self selector:@selector(timerStudy) userInfo:nil repeats:YES];

        [[NSRunLoop currentRunLoop] addTimer:timer2 forMode:NSDefaultRunLoopMode];

         */

     }

    static int count;

    - (void)timerStudy

    {

      NSLog(@"%d",count);

    }

     

  • 相关阅读:
    iOS开发—在ARC环境中,要使用第三方框架,但是这个框架是MRC(非ARC),怎么做?
    iOS开发—nil、Nil、NULL、NSNull详解
    iOS开发—使用VIPER构建iOS应用
    iOS开发—深入了解控制器View的加载
    iOS开发问题总结
    iOS开发实用技巧—Xcode Tips & Tricks(代码调试)
    jsp——学习篇:HTML基础
    jsp——学习篇:所需软件环境的搭建与配置
    jsp——学习篇:初始激励
    Linux文件权限详解 文件和目录权限概述
  • 原文地址:https://www.cnblogs.com/oumygade/p/4422987.html
Copyright © 2011-2022 走看看