gpt4 book ai didi

iphone - 带有当前时间的 UILabel

转载 作者:可可西里 更新时间:2023-11-01 03:49:48 27 4
gpt4 key购买 nike

我有一个 UILabel,我想显示当前时间 (HH:mm)(与状态栏中的时间相同)。

如何更新标签以更改为新时间?如果我安排一个 NSTimer 的间隔为 60 秒,那么如果计时器在系统时间的分钟更改之前触发,那么标签最多可能会超时一分钟?

将计时器的间隔设置为 1 秒是否可以,还是会占用不必要的资源?或者是否有另一种方法来确保标签将与状态栏时钟保持同步(最好是完全同步,但 1 秒背风方式是可以的)?

最佳答案

Dispatch 是您的 friend :

void runBlockEveryMinute(dispatch_block_t block)
{
block(); // initial block call

// get the current time
struct timespec startPopTime;
gettimeofday((struct timeval *) &startPopTime, NULL);

// trim the time
startPopTime.tv_sec -= (startPopTime.tv_sec % 60);
startPopTime.tv_sec += 60;

dispatch_time_t time = dispatch_walltime(&startPopTime, 0);

__block dispatch_block_t afterBlock = ^(void) {
block();

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * 60), dispatch_get_main_queue(), afterBlock);
};

dispatch_after(time, dispatch_get_main_queue(), afterBlock); // start the 'timer' going
}

这将同步到纳秒,并且仅在分钟更改时调用。我相信这是适合您情况的最佳解决方案。

关于iphone - 带有当前时间的 UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11567392/

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