作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在下面的代码中,在运行应用程序时, block 变量中的日志
block1
NSLog(@"Delay_Expired");
dispatch_async
运行。
dispatch_block_t block1 = ^{
for (int i = 0; i < 10; i++) {
[NSThread sleepForTimeInterval: 700];
NSLog(@"current i = %d", i);
}
};
dispatch_queue_t defaultPriority = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_queue_t backgroundPriority = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
NSLog(@"Delay_Expired");
dispatch_async(defaultPriority, block1);
最佳答案
它正在运行,但它是异步运行的,你只是在它有机会完成之前退出你的应用程序。如果您在一个 GUI 应用程序中尝试此操作,该应用程序在用户手动退出之前一直处于事件状态,您会看到它的行为与您预期的一样。
如果您在命令行应用程序中执行此操作,您可以使用调度组来等待调度的代码完成,例如:
dispatch_group_t group = dispatch_group_create();
dispatch_queue_t defaultPriority = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_async(group, defaultPriority, ^{
for (int i = 0; i < 10; i++) {
[NSThread sleepForTimeInterval:0.7];
NSLog(@"current i = %d", i);
}
});
NSLog(@"Waiting");
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
NSLog(@"All done");
sleepForTimeInterval
使用秒,而不是毫秒?也许您打算使用 0.7 秒,而不是 700 秒?
关于ios - 如何让 dispatch_async 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58677829/
我是一名优秀的程序员,十分优秀!