我想要一直运行一个服务即使应用程序closures,在Swift IOS中终止或终止

这里是我想要运行的示例代码服务

internal func backService() { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), { () -> Void in let anObject = try! Realm().objects(remindertbl).filter("status = 0") print("here") for loop in anObject { let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "dd/MM/yyyy hh:mm a" let timestamp = dateFormatter.stringFromDate(NSDate()) let timeStampint = dateFormatter.dateFromString(timestamp)!.timeIntervalSince1970 if(loop.reminderdays == Int64(timeStampint)) { if(loop.status == 0){ let notification = UILocalNotification() notification.fireDate = NSDate(timeIntervalSince1970: 0) notification.alertBody = "\(loop.title)" notification.alertAction = "swipe to opem VLB Cloud!" notification.soundName = UILocalNotificationDefaultSoundName notification.userInfo = ["CustomField1": "w00t"] UIApplication.sharedApplication().scheduleLocalNotification(notification) let updateObject = try! Realm().objects(remindertbl).filter("status = 0") var reminderObject = remindertbl() for updateStatus in updateObject{ try! Realm().write() { print("target") reminderObject.status = 2 reminderObject.reminderId = updateStatus.reminderId reminderObject.syncflag = updateStatus.syncflag reminderObject.vehicleid = updateStatus.vehicleid reminderObject.syncid = updateStatus.syncid reminderObject.dateadded = updateStatus.dateadded reminderObject.datemodified = Int64(Timestamp)! reminderObject.remindertime = updateStatus.remindertime reminderObject.reminerDate = updateStatus.reminerDate reminderObject.reminderdays = updateStatus.reminderdays reminderObject.title = updateStatus.title reminderObject.targetdistance = updateStatus.targetdistance reminderObject.currentdistance = updateStatus.currentdistance reminderObject.remindertype = updateStatus.remindertype reminderObject.synctype = updateStatus.synctype reminderObject.recuringdays = updateStatus.recuringdays reminderObject.recuringdistance = updateStatus.recuringdistance try! Realm().add(reminderObject, update: true) reminderObject = remindertbl() } } } } } }) } 

你所问的是不可能的,原因有很多:

  1. 已被杀死或终止的任务/应用程序无法按定义运行某些代码
  2. 苹果公司在iOS设备上支持一些背景模式,如果你不是像VoIP这样的特定任务,那么你的应用程序将无法被操作系统随时运行

如果您想了解更多有关在iOS上执行背景任务的信息,build议您阅读官方文档: Apple文档或Ray Wenderlich团队的本教程: 适用于iOS的背景模式