Ich schreibe eine iPad-App, und ich muss eine Grafik ändern, wenn sich der Tag in Sonntag ändert.
Meine einfache Lösung besteht darin, den Tag in den Methoden - (void)applicationDidBecomeActive:(UIApplication *)application
oder -(void)viewWillAppear:(BOOL)animated
zu überprüfen und einen Timer wie alle 10 Minuten einzustellen, um zu überprüfen, ob sich der Tag auf Sonntag geändert hat, während die App aktiv ist.
Gibt es einen anderen, vielleicht effizienteren Weg, damit umzugehen?
Implementieren Sie in Ihrem Anwendungsdelegaten die folgende Methode:
-(void)applicationSignificantTimeChange:(UIApplication *)application
Diese Methode wird aufgerufen, wenn sich der Tag ändert oder wenn die Uhrzeit des Geräts aus irgendeinem Grund im Hintergrund geändert wurde (z. B. Änderungen der Zeitzone).
Eine andere Option wäre, die beiden oben erwähnten Methoden "viewWillAppear:" und "applicationDidBecomeActive:" zu verwenden. Anstatt nur alle 10 Minuten einen Timer zu setzen, berechnen Sie einfach die Zeit zwischen der aktuellen Uhrzeit und dem nächsten Sonntag . Nehmen Sie dieses Zeitintervall und verwenden Sie es, um einen Timer einzustellen, der genau um Mitternacht am Sonntag feuern wird.
Es gibt eine Benachrichtigung darüber, wann sich der Tag ändert. Sie könnten es hören und überprüfen, ob es Sonntag ist, wenn es feuert.
Sie sollten auch überprüfen, ob es Sonntag beim Start ist.
Was ist los mit dieser Lösung? Wird es an manchen Orten öfter als einmal alle 10 Minuten Sonntag?
Eine Sache, die Sie vielleicht in Betracht ziehen sollten: Wenn Sie in Ihrer Timer-Feuermethode nach 23:50 Uhr sind, planen Sie den Timer früher (dh um 00:00), so dass Sie eher Mitternacht genau erfassen / p>
Dieses Kapitel könnte sich als nützlich erweisen, wenn Sie eine Art Benachrichtigung zum Aktualisieren verwenden:
Obwohl ich selbst mit der gleichen Lösung gelandet bin, die Sie verwenden, ist es einfacher und zuverlässiger, finde ich.