繁体   English   中英

NSTimer在下一个日期时间不触发

[英]NSTimer does not fire in next date time

我需要根据日期选择器中选择的时间触发计时器。 现在,如果所选时间大于我的当前时间,则NSTimeInterval返回正值,并且计时器正确触发。

我的问题是,当我选择的时间小于当前时间时, NSTimeInterval返回负值。

所以,现在我要做的是:-增加秒数,以便第二天被24 * 60 * 60触发。

秒值即将正确,因为当我通过将时间更改为日期进行测试时,它将返回具有选定时间的下一个日期。

我在设置计时器时使用了这些秒数。

这是我的代码:

NSTimeInterval value=[[self.pickerView date] timeIntervalSinceDate:[NSDate date]];

        value=value+24*60*60;
        NSLog(@"value =%f",value);


        NSDate *d1 = [NSDate dateWithTimeIntervalSinceNow:value];
        NSLog(@"%@",d1);
        NSDateFormatter *format=[[NSDateFormatter alloc]init];
        [format setDateFormat:@"dd/MM/yyyy hh:mm:ss a"];
        NSString *str=[format stringFromDate:d1];
        NSLog(@"str=%@",str);
        [format release];
        NSTimer *t = [[NSTimer alloc] initWithFireDate: d1
                                              interval: 1
                                                target: app
                                              selector:@selector(fireWakeUpTimerMethod:)
                                              userInfo:dict repeats:NO];
      //  app.WakeUPTimer=t;
        NSRunLoop *runner = [NSRunLoop currentRunLoop];
        [runner addTimer:t forMode: NSRunLoopCommonModes];
        [t release];

但是计时器并没有被解雇。

我这样测试:-假设我的设备当前时间为6月15日上午11:00,然后在选择器视图中选择上午10:00,因为上午10:00小于上午11:00,则时间间隔返回负数值,因此在这种情况下,我会执行value = value +(24 * 60 * 60); 并使用此值设置计时器。然后,我打开设置应用并将设备日期和时间更改为6月16日上午9:58,然后关闭设置应用并打开我的应用。但是该方法并未在上午10:00触发。告诉我们这是否是测试这种情况的正确方法。或者我在测试而不是编码时犯了一些错误。

我被困在这里,请帮助我。

提前致谢!

我认为您的价值正确:

 value=value+(24*60*60);

还要检查NSTimer的目标及其选择器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM