- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 View Controller ,其中有几个文本字段和 4 个按钮(代表 4 张照片),用户将单击这些照片来选择要上传到服务器的照片,以及一个“保存”按钮。选择照片后,我使用dispatch_async将照片上传到服务器并获取返回的URL,并使用该URL和文本字段中的其他信息来调用另一个API,并在用户单击“保存”按钮时将所有内容上传到服务器。
对于这种情况:如果我单击“保存”按钮,但照片尚未上传到服务器,我可以使用 DispatchGroup 来通知所有照片何时上传,并且我可以在等待时显示进度平视显示器,当完成时,我'将调用另一个API将所有数据提交到服务器并弹出当前 View Controller 。
但是我有一个要求,当用户单击“保存”按钮时,必须立即弹出 View Controller ,并且所有这些 API 调用都应该在后台运行。我能想到的解决方案是,当用户单击“保存”按钮时,我会将所有文本字段信息保存到数据库(核心数据或用户默认值)。因为我使用 PhotoUploading 单例类将照片上传到服务器,所以当服务器返回照片的 URL 时,我将使用该单例将这些 URL 保存到数据库,并调用 API 方法将所有数据提交到服务器。但通过这样做,我必须为 PhotoUploading 类添加不相关的作品。
有没有更好的方法可以使用 GCD 和队列而不使用数据库来做到这一点?我想要归档的是使用 GCD 在后台处理此 View Controller 中的所有内容。比如等待上传任务完成,然后在不阻塞 UI 的情况下执行此任务
最佳答案
您要求的是执行 UIViewController
中的所有任务,即使在关闭它之后也是如此。这可以通过不取消初始化 UIViewController 来实现。以下是 swift
中的示例。
var viewController: ViewController?
func launchVC() {
viewController = ViewController()
self.present(viewController!, animated: true, completion: nil)
}
func dismissVC() {
if let view_controller = self.viewController {
view_controller.dismiss(animated: true, completion: nil)
}
}
func killVC() {
viewController = nil
}
正如您在上面所看到的,即使在解除 ViewController
之后,ViewController
仍然存在。因此,您在特定 ViewController
的后台线程中启动的任何任务都将完成。完成后,您可以销毁 ViewController
对象。
您无需使用任何外部 Singleton
类即可完成此操作。
如果您正在寻找其他内容或者对当前解决方案有任何疑问,请告诉我
关于iOS Swift - 调度组,异步调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43515494/
前言 elsa内部很多地方都会用到后台作业,也就是在后台线程中执行一堆任务,这与我们通常理解的后台作业没有区别。 elsa将后台作业也称为调度Schedul,相关功能由Elsa.Schedulin
我有一个带有一些功能的perl对象。每个功能从主程序中调用一次。我想并行运行某些功能以节省时间。由于某些功能取决于先前功能的结果,因此我无法将它们全部一起运行。 我想到了这样的事情: 对于每个函数,保
首先,我的代码在这里: import schedule # see https://github.com/dbader/schedule import crawler def job(): p
从 11 月 1 日开始,我必须使用quartz调度程序每4个月安排一次任务。我使用 cronExpression 来实现同样的目的。但 cronExpression 每年都会重置。所以我的任务将在
我有以下代码块,它调用两个请求,但略有延迟。 final ActorRef actor1 = getContext().actorOf( ActorClass.prop
考虑到 Linux 的情况,我们为每个用户堆栈都有一个内核堆栈,据我所知,每当发生上下文切换时,我们都会切换到当前进程的内核模式。 这里我们保存当前进程的当前状态,寄存器,程序数据等,然后调度器(不确
我有将东西移植到 OpenBSD 的奇怪爱好。我知道它有 pthreads 问题,但在 2013 年 5 月发布版本之前我不会升级。我使用的是 5.0,我对 pthreads 还很陌生。我已经学习了
给定一组任务: T1(20,100) T2(30,250) T3(100,400) (execution time, deadline=peroid) 现在我想将截止日期限制为 Di = f * Pi
使用 Django 开发一个小型日程安排 Web 应用程序,在该应用程序中,人们被分配特定的时间与他们的上级会面。员工存储为模型,与表示时间范围和他们有空的星期几的模型具有 OneToMany 关系。
我想了解贪婪算法调度问题的工作原理。 所以我一直在阅读和谷歌搜索一段时间,因为我无法理解贪心算法调度问题。 我们有 n 个作业要安排在单个资源上。作业 (i) 有一个请求的开始时间 s(i) 和结束时
这是流行的 El Goog 问题的变体。 考虑以下调度问题:有 n 个作业,i = 1..n。有 1 台 super 计算机和无限的 PC。每个作业都需要先经过 super 计算机的预处理,然后再在P
假设我有一个需要运行多次的蜘蛛 class My_spider(Scrapy.spider): #spider def 我想做这样的事 while True: runner = Cra
我已将 podAntiAffinity 添加到我的 DeploymentConfig 模板中。 但是,pod 被安排在我预计会被规则排除的节点上。 我如何查看 kubernetes 调度程序的日志以了
我已经使用 React - Redux - Typescript 堆栈有一段时间了,到目前为止我很喜欢它。但是,由于我对 Redux 很陌生,所以我一直在想这个特定的话题。 调度 Redux 操作(和
我想按照预定的计划(例如,周一至周五,美国东部时间晚上 9 点至 5 点)运行单个 Azure 实例以减少账单,并且想知道最好的方法是什么。 问题的两个部分: 能否使用服务管理 API [1] 按预定
假设最小模块安装(为了简单起见),Drupal 的 index.php 中两个顶级功能的核心“职责”是什么? ? drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); me
我正在尝试使用 Racket(以前称为 PLT Scheme)连接 URL 调度。我查看了教程和服务器文档。我不知道如何将请求路由到相同的 servlet。 具体例子: #lang 方案 (需要网络服
我想在 Airflow (v1.9.0) 上运行计划。 我的DAG需要在每个月底运行,但我不知道如何编写设置。 my_dag = DAG(dag_id=DAG_ID, cat
我正在尝试在“httpTrigger”类型函数的 function.json 中设置计划字段,但计时器功能似乎未运行。我的目标是拥有一个甚至可以在需要时进行调度和手动启动的功能,而不必仅为了调度而添加
我正在尝试制定每周、每月的 Airflow 计划,但不起作用。有人可以报告可能发生的情况吗?如果我每周、每月进行安排,它就会保持静止,就好像它被关闭一样。没有错误信息,只是不执行。我发送了一个代码示例
我是一名优秀的程序员,十分优秀!