您好我有一个计时器应从12:00分在iPhone应用程序数到晚上12点! 但是,当它启动时,它计算这样的; 11:58 11:56 11:54 11:52
它是依靠每滴答2秒。
这是在启动按钮的代码的代码:
tid.text=[NSString stringWithFormat:@"%d:%.2d",minuter,sekunder];
timer= [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(tidklick) userInfo:nil repeats:YES];
这是该方法tidklick:
-(void) tidklick
{
tiden -= 1;
sekunder = tiden % 60;
minuter= (tiden - sekunder) / 60;
tid.text=[NSString stringWithFormat:@"%d:%.2d",minuter,sekunder];
}
这是在一开始的代码..
int tiden=720;
int sekunder;
int minuter;
这似乎在说,我把在该方法中的NSLog ...
2012-04-26 06:41:38.562 Matte [288:f803] tiden: 719
sekunder: 59
2012-04-26 06:41:38.607 Matte [288:f803] tiden: 718
sekunder: 58
2012-04-26 06:41:39.562 Matte[288:f803] tiden: 717
sekunder: 57
2012-04-26 06:41:39.607 Matte[288:f803] tiden: 716
sekunder: 56
2012-04-26 06:41:40.562 Matte [288:f803] tiden: 715
sekunder: 55
2012-04-26 06:41:40.607 Matte [288:f803] tiden: 714
sekunder: 54
我试图让一个新的计时器使用新名称和新的方法,但它仍然被2 ..它可以有事可做的事实,我有很多的按钮之类的东西在屏幕上? 一些内存错误?
提前致谢!
你的逻辑看起来不错。 你确定你不是在创建计时器两次?
你的代码没有问题,尝试首测
那么你就会知道,如果指望它每2秒或者每2秒刷新UI
-(void) tidklick
{
tiden -= 1;
sekunder = tiden % 60;
// add log here
NSLog(@"tiden: %d\n sekunder: %d",tiden,sekunder);
minuter= (tiden - sekunder) / 60;
tid.text=[NSString stringWithFormat:@"%d:%.2d",minuter,sekunder];
}
你可以尝试运行在后台线程计时器
[self performSelectorInBackground:@selector(schedule) withObject:nil];
- (void) schedule {
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
NSRunLoop* runLoop = [NSRunLoop currentRunLoop];
timer = [[NSTimer scheduledTimerWithTimeInterval:1.0f
target:self
selector:@selector(run:)
userInfo:nil
repeats:YES]
retain];
[runLoop run];
[pool release];
}
-(void) run:(id) sender{
// you should handle the thread-safe
tiden -= 1;
sekunder = tiden % 60;
// add log here
NSLog(@"tiden: %d\n sekunder: %d",tiden,sekunder);
minuter= (tiden - sekunder) / 60;
NSString *test =[NSString stringWithFormat:@"%d:%.2d",minuter,sekunder];
[label performSelectorOnMainThread:@selector(setText:) withObject:test waitUntilDone:YES];
}
有时从Xcode的运行可以使事情很慢。 如前所述的逻辑看起来很好。 你可以尝试在手机上运行它,但不能从Xcode的。 这可能与仿真器正常工作。 不知道这一点,但。