美文网首页iOS
iOS计时器NSTimer

iOS计时器NSTimer

作者: 若风_412d | 来源:发表于2019-08-28 17:18 被阅读0次

计时器基本:

30秒执行
//计时器
@property (strong,nonatomic)NSTimer *OpenTim;

                _OpenTim = [NSTimer scheduledTimerWithTimeInterval:30.f target:self selector:@selector(OpenTimeCk) userInfo:nil repeats:YES];


#pragma mark -- 计时器

-(void)OpenTimeCk{
    NSLog(@"----------结束-----------------------");
  //  [[MBProgressHUDManager manger] remove];
    [_OpenTim invalidate];
    _OpenTim = nil;
    
}

https://blog.csdn.net/a787188834/article/details/79802501

计时器:后台持续计时

####计算用户使用某产品时间间隔,每隔1分钟显示在手机上
情况:1。如果 用本地时间startdate 和 enddate  相减 ,用户换手机那么显示就错了。
2.如果startdate是后台获取,enddate是手机,相减 ,用户改变手机系统时间显示就错了。
3.如果如果startdate是后台获取,enddate是网络时间。那么每一分钟就请求一次网络,太无良了,浪费流量。
4.可以这样写。startdate 是后台获取,计时器每分钟请求一次enddate。当用户关闭手机进入后台停止计时器,重新激活时开启计时器,刷新一次计时器。
这样时间间隔是对的,又不会费流量。

ios NSTimer只执行一次甚至不执行问题

    [self performSelectorOnMainThread:@selector(addScrollTimer) withObject:nil waitUntilDone:NO];

    _scrollViewTimer = [NSTimer timerWithTimeInterval:5.0f target:self selector:@selector(scrollTimerClick) userInfo:nil repeats:YES];
         [[NSRunLoop currentRunLoop] addTimer:_scrollViewTimer forMode:NSRunLoopCommonModes];


ios NSTimer 停不下来,即使界面已经消失还是会执行 。

我们想要的效果:当页面消失,如果还没到时间就不在执行

- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
    [_OpenTim setFireDate:[NSDate distantFuture]];//关闭计时器
  [_OpenTim invalidate];//销毁
    _OpenTim = nil;
}

//开启定时器
[myTimer setFireDate:[NSDate distantPast]];

相关文章

网友评论

    本文标题:iOS计时器NSTimer

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