Wie verwende ich eine NSTimer
? Kann mir jemand eine Schritt-für-Schritt-Anleitung geben?
Antwort
Zu viele Anzeigen?
gjpc
Punkte
1408
Die Antworten fehlen zu einer bestimmten Tageszeit, hier ist es die nächste Stunde:
NSCalendarUnit allUnits = NSCalendarUnitYear | NSCalendarUnitMonth |
NSCalendarUnitDay | NSCalendarUnitHour |
NSCalendarUnitMinute | NSCalendarUnitSecond;
NSCalendar *calendar = [[ NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdayComponents = [calendar components: allUnits
fromDate: [ NSDate date ] ];
[ weekdayComponents setHour: weekdayComponents.hour + 1 ];
[ weekdayComponents setMinute: 0 ];
[ weekdayComponents setSecond: 0 ];
NSDate *nextTime = [ calendar dateFromComponents: weekdayComponents ];
refreshTimer = [[ NSTimer alloc ] initWithFireDate: nextTime
interval: 0.0
target: self
selector: @selector( doRefresh )
userInfo: nil repeats: NO ];
[[NSRunLoop currentRunLoop] addTimer: refreshTimer forMode: NSDefaultRunLoopMode];
Natürlich können Sie "doRefresh" durch die gewünschte Methode Ihrer Klasse ersetzen
versuchen, das Kalenderobjekt einmal zu erstellen und die allUnits aus Effizienzgründen statisch zu machen.
das Hinzufügen einer Komponente zur Stunde funktioniert problemlos, ein Mitternachtstest ist nicht erforderlich ( l )
- See previous answers
- Weitere Antworten anzeigen