Swift: 如何制作一个在用户使用应用程序时加载内容的函数?
Swift: How to make a function that loads something while the user uses the app?
我有一个功能需要一分钟才能完成 运行。我希望这个函数在用户什么都不做的时候是 运行ning,但是只要用户进行交互,函数就会停止,用户可以正常进行交互。
我不知道该怎么做,或者是否可能。
(耗时 1 分钟的函数是围绕网格生成随机路径,并且不断生成大量错误路径,直到一个有效。这不是最有效的方法,但我曾尝试重写它,但没有成功。)
这是在Objective C
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Background execution
dispatch_async(dispatch_get_main_queue(), ^{
// UI Update
});
});
这是在Swift3
DispatchQueue.global(qos: .background).async {
// Background execution
DispatchQueue.main.async {
// UI Update
}
}
使用它可以在后台执行操作,同时用户仍然可以使用该应用程序。
还有其他方法可以做到这一点,比如 NSOperationQueue,你也可以使用委托和完成处理程序,但对于新手开发人员来说,这将是最简单的方法。
我有一个功能需要一分钟才能完成 运行。我希望这个函数在用户什么都不做的时候是 运行ning,但是只要用户进行交互,函数就会停止,用户可以正常进行交互。
我不知道该怎么做,或者是否可能。
(耗时 1 分钟的函数是围绕网格生成随机路径,并且不断生成大量错误路径,直到一个有效。这不是最有效的方法,但我曾尝试重写它,但没有成功。)
这是在Objective C
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Background execution
dispatch_async(dispatch_get_main_queue(), ^{
// UI Update
});
});
这是在Swift3
DispatchQueue.global(qos: .background).async {
// Background execution
DispatchQueue.main.async {
// UI Update
}
}
使用它可以在后台执行操作,同时用户仍然可以使用该应用程序。 还有其他方法可以做到这一点,比如 NSOperationQueue,你也可以使用委托和完成处理程序,但对于新手开发人员来说,这将是最简单的方法。