我环顾四周,但找不到任何答案。
有谁知道如何在每天12:00运行一个代码块而不使用NSTimer

最佳答案

您可以设置一个调度源来执行此操作。获取中午之前的剩余时间作为开始时间,并将间隔设置为每24小时一次。类似于:

let startTime = NSCalendar.currentCalendar().nextDateAfterDate(NSDate(), matchingHour: 12, minute: 0, second: 0, options: .MatchNextTime) ?? NSDate()
let startDelta = startTime.timeIntervalSinceNow * NSTimeInterval(NSEC_PER_SEC)
let periodicSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue())

dispatch_source_set_timer(periodicSource, dispatch_walltime(nil, Int64(startDelta)), 60 * 60 * 24 * NSEC_PER_SEC, NSEC_PER_SEC)
dispatch_source_set_event_handler(periodicSource) {
    print("bing bong!")
}
dispatch_resume(periodicSource)

关于ios - 如何每天在设定的时间运行代码? swift ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38106791/

10-11 00:22