0

時刻が変更されたときに通知を受け取るベスト プラクティスはありますか?

NSTimer時間が変更された場合 (秒とミリ秒ではなく、時間と分) を 0,002 秒ごとにチェックして、アプリのラベルと電話の時計との同期を毎分維持する を使用しています。

より良い解決策があることを願っています。

ありがとうございました

4

2 に答える 2

2

次の 1 分から始まる繰り返しタイマーを設定します。

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)        

    let nextMinuteDate =  NSCalendar.currentCalendar().nextDateAfterDate(NSDate(), matchingUnit: .Second, value: 0, options: [.MatchNextTime])!
    self.minuteDidChangeTimer = NSTimer(fireDate: nextMinuteDate, interval: 60.0, target: self, selector: "minuteDidChangeTimer:", userInfo: nil, repeats: true)
    NSRunLoop.currentRunLoop().addTimer(self.minuteDidChangeTimer, forMode: NSDefaultRunLoopMode)

    :
}

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)

    self.minuteDidChangeTimer.invalidate()
    self.minuteDidChangeTimer = nil

    :
}

UIApplicationSignificantTimeChangeNotificationまた、「新しい日 (午前 0 時) への変更、キャリア時間の更新、夏時間への変更、または夏時間からの変更」など、予期しない大きな変更に対応して UI を更新することもできます。

于 2016-02-25T10:39:25.177 に答える