现在,我有一些多年前编写的旧代码,允许 iOS 应用程序在用户离线时排队作业(发送消息或向后端服务器提交数据等)。当用户重新联机时,任务将运行。如果应用程序进入后台或被终止,队列将被序列化,然后在应用程序再次启动时重新加载。我已经分类NSOperationQueue
了,我的工作是NSOperation
. 这使我可以灵活地为我提供数据结构,我可以直接子类化(操作队列),并且通过子类化NSOperation
,如果我的任务失败(服务器关闭等),我可以轻松地重新排队。
我很可能会保持原样,因为如果它没有坏就不要修复它,对吧?此外,这些都是非常轻量级的操作,我不希望在我正在开发的当前应用程序中,在任何给定时间都会有很多任务排队。但是我知道使用NSOperation
而不是GCD
直接使用会产生一些额外的开销。
我不相信我可以像我那样子类NSOperationQueue
化一个调度队列,所以每次应用程序发送到背景,对吧?也不确定如果工作失败,我将如何处理重新排队工作。现在,如果我HTTP 500 response
从服务器获得一个,例如,在我的操作代码中,我会发送一个通知,其中包含失败NSOperation
对象的深层副本。我的自定义操作队列会选择此通知并将任务添加到自身。不知道如果我能用GCD
. 我还需要一种简单的方法来取消所有操作或在网络连接丢失时暂停队列,然后在重新获得网络访问权限时重新激活。
只是希望从其他可能做过类似或GCD
比我更熟悉的人那里得到一些想法、意见和想法。
另外值得注意的是,我知道有一些新的后台任务支持即将推出,iOS 7
但可能需要一段时间才能成为我的部署目标。我还不确定它是否能完全满足我的需要,所以目前只看GCD
.
谢谢。