- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
是否有可能使这个“更清晰”或“更好”?欢迎任何解决方案,甚至认为我得到了正确答案。
问题是 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/
dispatch_after 是否将操作放入队列中?也就是说,如果我在多次调用后调用 dispatch_after 来回调用,它们是否会像延迟后每个调用都放在 dispatch_async 中一样执行
我正在显示一个 UIView,以显示有关用户标记用于其他目的(例如删除或编辑)的 map 要素的信息。标记功能后,我会显示一个包含信息和撤消选项的 UIView。在固定的时间内显示 UIView 已经
是否有可能使这个“更清晰”或“更好”?欢迎任何解决方案,甚至认为我得到了正确答案。 问题是 popTime==0 的 dispatch_after() 仍然给主线程时间来进行一些 UI 更改。以下代码
我正在设置一个计时器,以便在一秒钟后为我的键盘扩展重置一个值。问题是我觉得下面的调用正在拖延我的 UI: dispatch_after(dispatch_time(DISPATCH_TIME_NOW,
这是我第一次使用 GCD,我承认,如果我犯了傻,我深表歉意。我有一个 dispatch_after 命令,它对我来说是一个方便的延迟。 我的问题是当我发送 dispatch_after(5000000
我目前正在做一个项目,其中一部分我需要在一段时间后取消突出显示一个按钮。我决定使用 dispatch_after。 我已经设法让它工作了,但是有人能解释一下这行代码是如何工作的吗?我一直无法理解 di
我使用动画来指定提示,以帮助延迟交互: let delay = 1.8 * Double(NSEC_PER_SEC) let time = dispatch_time(DISPATCH_TI
请考虑以下简单示例: - (void)viewDidLoad { [super viewDidLoad]; dispatch_after(dispatch_time(DISPATCH_TIME
这是我需要做的: 类似于: for int i = 0; i < 3; i++) call method @selector(spin) with delay 0.1 //once this is d
我在方法中有以下代码: int64_t delayInSeconds = 2.0f; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW
在 viewDidLoad 的 MyViewController 中,我只有一个调用: - (void)viewDidLoad { [super viewDidLoad]; // Do
像这样很容易延迟执行 double delayInSeconds = 2.0; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, d
这是我编写的用于将 NSTimeInterval 转换为基于 walltime 的 dispatch_time_t 的结构: public struct WallTimeKeeper { pu
我开发了一种方法,每 3 秒显示一个移动的图像。我使用 dispatch_after 进行制作,但在应用程序的每次执行中,显示图像的距离或时间都是不同的。将 NSTimer 与 Schedule 一起
我想要一个包含 dispatch_after 语句的 for 循环。问题是 dispatch_after 调用似乎与 for 循环不一致。换句话说,我希望它仅在 dispatch_after bloc
我正在尝试创建一个这样的循环: while (TRUE){ dispatch_after(...{ }); } 在 viewDidLoad 之后。这个想法是反复重复 dispatch
这里是 Swift/SO 新手 - 会尽量说清楚! 我有一个 @IBAction 从 wkinterfacepicker 调用。这会调用一个函数,该函数可能会再次更改选择器 - 这反过来会导致 @IB
我正在编写一个将同时执行多项任务的应用程序。一项特定任务是每 200 毫秒执行一次。为此,我使用了两种相互调用的方法。第一个方法只调用第二个,第二个方法使用 dispatch_after() 延迟调用
这是我的问题。当我的应用程序进入后台时,我希望它在一段时间后执行一个功能。这就是我所做的: - (void)applicationDidEnterBackground:(UIApplication *
这个问题在这里已经有了答案: Prevent dispatch_after() background task from being executed (11 个答案) 关闭 7 年前。 有没有办法
我是一名优秀的程序员,十分优秀!