我希望在iOS8上我的应用程序处于后台模式时运行定期任务。我在swift中编写了以下代码,但是失败了。有人可以指出出了什么问题吗?
这是来自AppDelegate.swift的代码
let backgroundQueue = dispatch_get_global_queue(QOS_CLASS_BACKGROUND,0)
func applicationDidEnterBackground(application: UIApplication) {
println("did enter background")
dispatch_async(self.backgroundQueue, myBackgroundTask)
}
func myBackgroundTask() {
NSThread.sleepForTimeInterval(0.5)
println("this is back ground task")
dispatch_async(self.backgroundQueue, myBackgroundTask)
}
答案 0 :(得分:1)
有人告诉我打电话" beginBackgroundTaskWithName"是答案。
func applicationDidEnterBackground(application: UIApplication) {
println("did enter background")
application.beginBackgroundTaskWithName("myBgTask", expirationHandler: nil)
dispatch_async(self.backgroundQueue, myBackgroundTask)
}
func myBackgroundTask() {
NSThread.sleepForTimeInterval(0.5)
println("this is back ground task")
dispatch_async(self.backgroundQueue, myBackgroundTask)
}
答案 1 :(得分:0)
您是否尝试使用:
dispatch_async(self.backgroundQueue, Selector("myBackgroundTask"))
我不确定这是不是这样,但是在快速传递func作为参数通常是这样的。