zoukankan      html  css  js  c++  java
  • iOS-NSTimer

    一、倒计时的实现(老代码,只提供思路,最新的用法请参阅最新的sdk对应的文档)

    开始运行viewDidLoad的时候加载 [NSTimerscheduledTimerWithTimeInterval:1.0 target:selfselector:@selector(timerFireMethod:) userInfo:nilrepeats:YES];//使用timer定时,每秒触发一次
    ,然后就是写selector了。
     
    -(void)timerFireMethod:(NSTimer*)theTimer
    {
     //NSDateFormatter *dateformatter =[[[NSDateFormatter alloc]init]autorelease];//定义NSDateFormatter用来显示格式
     //[dateformatter setDateFormat:@"yyyy MM dd hh mmss"];//设定格式
     NSCalendar *cal = [NSCalendarcurrentCalendar];//定义一个NSCalendar对象
     NSDateComponents *shibo = [[NSDateComponentsalloc] init];//初始化目标时间(好像是世博会的日期)
     [shibo setYear:2010];
     [shibo setMonth:5];
     [shibo setDay:1];
     [shibo setHour:8];
     [shibo setMinute:0];
     [shibo setSecond:0];
     
     NSDate *todate = [caldateFromComponents:shibo];//把目标时间装载入date
     [shibo release];
    // NSString *ssss = [dateformatterstringFromDate:dd];
    // NSLog([NSString stringWithFormat:@"shiboshi:%@",ssss]);
     
     NSDate *today = [NSDate date];//得到当前时间
    // NSString *sss = [dateformatterstringFromDate:today];
    // NSLog([NSString stringWithFormat:@"xianzaishi:%@",sss]);
     //用来得到具体的时差
     unsigned int unitFlags = NSYearCalendarUnit |NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit |NSMinuteCalendarUnit | NSSecondCalendarUnit;
     NSDateComponents *d = [cal components:unitFlagsfromDate:today toDate:todate options:0];
     lab.text = [NSStringstringWithFormat:@"%d年%d月%d日%d时%d分%d秒",[d year],[d month], [d day],[d hour], [d minute], [d second]];
    }
    这样就实现了倒计时的功能。

    二、timer的常用方法(亲试,截止到202008,这些代码依然是可用的)

    定义一个 weak修饰的 timeraa 

    @property (nonatomic, weak) NSTimer * timeraa;

    初始化

    self.timeraa = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(XXXX) userInfo:nil repeats:YES];

     暂停timer

    [self.timeraa setFireDate:[NSDate distantFuture]];

    继续timer

    [self.timeraa setFireDate:[NSDate distantPast]];

    页面dealloc之前释放掉timer

    [self.timeraa invalidate];

    self.timeraa = nil;

  • 相关阅读:
    git处理冲突提交,撤销提交命令
    RocketMQ(4.7.0)单机与集群搭建,控制台搭建,并与springboot整合
    JVM进程的优雅关闭
    MySQL字段等值查询时,尾部有空格也能匹配上的坑
    带有连接池的Http客户端工具类HttpClientUtil
    比较两个jar包的版本号
    源码解读SLF4J绑定日志实现的原理
    log4j输出到控制台的性能问题
    多表查询
    分页优化
  • 原文地址:https://www.cnblogs.com/isItOk/p/5228104.html
Copyright © 2011-2022 走看看