gpt4 book ai didi

objective-c - 秒表显示问题

转载 作者:行者123 更新时间:2023-11-28 18:44:43 25 4
gpt4 key购买 nike

我编译了以下代码,没有明显的运行时错误;但是,当我运行它时,显示卡住在 00:00:01。如果我只显示秒属性,它就可以工作。有没有人看到我在这段代码中遗漏的明显疏忽?我知道开始按钮可能存在内存泄漏,但我最终会解决这个问题。

提前致谢。

#import "StopwatchViewController.h"

@implementation StopwatchViewController

- (IBAction)start{

//creates and fires timer every second
myTimer = [[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(showTime) userInfo:nil repeats:YES]retain];
}
- (IBAction)stop{
[myTimer invalidate];
myTimer = nil;
}

- (IBAction)reset{

[myTimer invalidate];
time.text = @"00:00:00";
}

(void)showTime{

int currentTime = [time.text intValue];

int new = currentTime +1;

int secs = new;
int mins = (secs/60) % 60;
int hours = (mins/60);

time.text = [NSString stringWithFormat:@"%.2d:%.2d:%.2d",hours, mins, secs];
}

最佳答案

你从

得到 0
int currentTime = [time.text intValue];

因为 text 中的字符串:

@"00:00:00"

无法转换为 int,因此每次计时器触发时,您将 1 添加到 0 并得到 1,然后显示。无论如何,数学都是不准确的,因为分钟和秒是“以 60 为基数”*——为了再次获得总秒数,您需要对您执行的分离小时/分钟/秒的数学运算进行反向操作。您可以将 currentTime 设为一个 ivar,并在其中保留总秒数。


*这不是它真正的名字;我确定有一个特定的词。

关于objective-c - 秒表显示问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5998769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com