English 中文(简体)
国家安全局的时间推迟
原标题:Strange delay on NSTimer
  • 时间:2011-02-23 20:32:14
  •  标签:
  • iphone

我有以下法文本,以图德洛德。 所有这些都正在每秒更新一个标签。 然而,当我管理这一法典时,它就看到了 du的文字,然后才看到了8个秘密,而不是9个。

因此,似乎像第9条那样容易确定这一点吗? 在我计算剩下的时间时,我是否应该把小数四舍五入?

感谢您的时间!

//Just dummy text
self.lblTime.text = @"Tid: 0h 0min 10sec";

NSDate *expireDate = [[NSDate alloc] initWithTimeInterval:10 sinceDate:[NSDate date]];
self.expires = expireDate;
[expireDate release];


self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTimerDisplay) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:UITrackingRunLoopMode]; 

更新 时间变化

//Gets the time right now    
NSDate *now = [NSDate date];

//Stores the difference in seconds between when the test was started and now.
NSTimeInterval interval = [self.expires timeIntervalSinceDate:now];

//Gets the number of hours
NSInteger hours = interval / 3600;

interval = (int)interval % 3600;

//Gets the number of seconds
NSInteger minutes = interval / 60;

interval = (int)interval % 60;

NSInteger seconds = interval;

//Updates the label
self.lblTime.text = [NSString stringWithFormat:@"Time: %dh %dmin %dsec", hours, minutes, seconds];
最佳回答

首先,我建议使用<代码>[NSDatedate Withtime IntervalSinceNow:10]而不是[NSDate alloc] initWithtimeInterval:10 sinceDate:[NSDateday][自.expires time IntervalSinceNow],而不是[自.expires timeIntervalSinceDate:[Natedate]/code>。 这些比较简明扼要。

还记得,自<条码>自封/代码>起,其日期早于<条码>现,载于您的第二套代码<条码>,>中>>中>中>中<>中>中>中<>中>中>中>,因为“<>>>>>_>_>>_>_>>>>>_现成/代码>实际上是自<条码>以来的间隔。 你的法典似乎没有考虑到这一事实。

最后, 如果你将<代码>expires定为未来10秒,然后让您的平时钟点燃,你很可能错过了你的9个第二点。 这是因为,所有时间因素本身并不准确100%,因此可能已经过了1秒。 Say 1.01秒钟已经过去,剩下10-1.01=8.99秒,用立体字数计算后,将缩减至8秒。 在我看来,这似乎造成你的错误。 d 我通常建议更经常地向您开课,以避免出现这些问题。

如果你感兴趣,这是 时间上下文:

问题回答

<代码>NStimer 不能保证在正确的间隔期发生火灾。 你们可以肯定的唯一一点是,时间不会太早(假设你的装置的锁定速度是准确的),但很可能太晚了。

In your case, even if the timer fires only a little too late, you will get a wrong result because you are not rounding your seconds value, you just truncate it. You should consider rounding seconds and/or having the timer fire more frequently (e.g. every 0.2 or 0.1 seconds).





相关问题
Code sign Error

I have created a new iPhone application.I have two mach machines. I have created the certificate for running application in iPhone in one mac. Can I use the other mac for running the application in ...

ABPersonViewController Usage for displaying contact

Created a View based Project and added a contact to the AddressBook using ABAddressBookRef,ABRecordRef now i wanted to display the added contact ABPersonViewController is the method but how to use in ...

将音频Clips从Peter改为服务器

我不禁要问,那里是否有任何实例表明从Peit向服务器发送音响。 I m不关心电话或SIP风格的解决办法,只是一个简单的袖珍流程......

• 如何将搜查线重新定位?

我正试图把图像放在搜索条左边。 但是,问题始于这里,搜索条线不能重新布署。

热门标签