2017-02-09 63 views
0

我試圖在Watch應用Complication中支持TimeTravel。 考慮這個代碼。CLKComplicationDataSource:getTimelineEntries被調用數百次

我不明白爲什麼這些委託方法被重複調用,直到我殺了應用程序。

我不知道我會做錯什麼,因爲操作系統負責調用這些方法。這是一種WatchOS的bug嗎?

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會撥打代表千次次。