gpt4 book ai didi

ios - dispatch_after() 弹出时间为零

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:07:23 26 4
gpt4 key购买 nike

是否有可能使这个“更清晰”或“更好”?欢迎任何解决方案,甚至认为我得到了正确答案。

问题是 popTime==0 的 dispatch_after() 仍然给主线程时间来进行一些 UI 更改。以下代码有时会从后台线程调用。

-(void)methodCalledFromSomeThread{
if (delayInSeconds) {
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
// Updating some UI like
});
}else{
dispatch_async(dispatch_get_main_queue(), ^{
// Updating some UI like
});
}
}

最佳答案

主队列上的

dispatch_async 也会将代码排队以在下一个运行循环中运行,从而为系统更新 UI 留出时间。你可以这样检查:

void (^block)() = ^{
[self.tableView reloadData];
};

if (delayInSeconds) {
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), block);
}else if([NSThread isMainThread]) {
block();
}
else {
dispatch_async(dispatch_get_main_queue(), block);
}

关于ios - dispatch_after() 弹出时间为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20665035/

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