2017-02-09 6 views
0

Watchアプリケーションの複雑化でTimeTravelをサポートしようとしています。 このコードを検討してください。CLKComplicationDataSource:何百回も呼び出されたgetTimelineEntriesデリゲート

私は、アプリケーションを終了するまで、これらのデリゲートメソッドが繰り返し呼び出される理由を理解できません。

私は、OSがこれらのメソッドを呼び出す責任があるので、私が間違っていると思いますか。これは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がデリゲートをに、回呼び出すのは印象的です。

関連する問題