2017-02-09 4 views
0

Я пытаюсь поддерживать TimeTravel в приложении для просмотра Усложнение. Рассмотрите этот код.CLKComplicationDataSource: делегат getTimelineEntries, вызываемый сотни раз

Я не могу понять, почему эти методы делегатов вызываются повторно, пока я не убью приложение.

Интересно, что я могу делать неправильно, поскольку ОС отвечает за вызов этих методов. Это какая-то ошибка WatchOS?

func getTimelineEntries(for complication: CLKComplication, after date: Date, limit: Int, withHandler handler: @escaping ([ CLKComplicationTimelineEntry]?) -> Void) { 
    // Call the handler with the timeline entries after to the given date 

    let interval = stride(from:0.0, through:60, by: 10.0) 

    var entries: [CLKComplicationTimelineEntry]? = nil 

    switch complication.family { 

    case .circularSmall: 
     entries = interval.flatMap({ minutes in 
      entryForCircularSmall(date: date.addingTimeInterval(60.0 * minutes)) 
     }) 
     handler(entries) 

    case .utilitarianLarge: 
     entries = interval.flatMap({ minutes in 
      entryForUtilitarianLarge(date: date.addingTimeInterval(60.0 * minutes)) 
     }) 

     handler(entries) 

    default: 
     handler(nil) 
    } 

    print("future timelineEntries limit: \(limit), date: \(date), entries: \(entries?.count)") 
} 

func getTimelineEndDate(for complication: CLKComplication, withHandler handler: @escaping (Date?) -> Void) { 
    let date = Date().addingTimeInterval(60.0 * Double(240)) 
    print("timeline end: \(date)") 
    handler(date) 
} 

Небольшой отрывок из журнала консоли:

timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:32:59 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:09 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:09 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000 
future timelineEntries limit: 100, date: 2017-02-09 23:33:10 +0000, entries: Optional(7) 
timeline end: 2017-02-10 03:33:10 +0000  

На данный момент, я убиваю приложение ...

ответ

0

Как выясняется, делегат был вызван слишком много раз, потому что Я бы продолжал поставлять записи хронологии на ту же дату.

У меня была ошибка в моем коде (не показан здесь), ответственном за создание объектов CLKComplicationTimelineEntry. Вместо того, чтобы использовать дату, предоставленную делегатом, я использовал вызов Date() (видимо, с помощью копирования метода getCurrentTimelineEntry).

Я нахожу впечатляющим, однако, что WatchOS будет называть делегата тысяч раз.

Смежные вопросы