William ha spiegato bene la differenza tra gli inizializzatori. (Votato)
NSDate ha anche proprietà che ti permettono di chiedere una data per darti degli intervalli di tempo. Ne parlerò tra un minuto.
Primo background: i metodi timeIntervalSince1970
e timeIntervalSinceReferenceDate
utilizzano una diversa "epoca di data" o una data che è considerata la "data zero" (la data con un valore numerico pari a zero).
timeIntervalSince1970
utilizza la data epoca che è lo standard in UNIX: mezzanotte del 1 gennaio 1970 in GMT. Questa è anche la data di epoca standard per le date su Internet.
timeIntervalSinceReferenceDate
utilizza la data di epoca Mac OS`/iOS: mezzanotte del 1 ° gennaio 2001. È possibile calcolare facilmente un offset costante tra queste 2 date di riferimento e convertirle tra loro mediante addizione/sottrazione.
Oltre ai metodi di avvio che avete parlato, NSDate ha proprietà che ti danno un valore che rappresenta il numero di secondi dal momento che una certa data di riferimento:
var timeIntervalSinceReferenceDate: NSTimeInterval
var timeIntervalSince1970: NSTimeInterval
E 'di confusione perché i nomi di le proprietà e i nomi dei metodi init appaiono identici in Swift. I metodi init sono chiamati un po 'più chiaramente in Objective-C:
+ (instancetype _Nonnull)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)seconds
+ (instancetype _Nonnull)dateWithTimeIntervalSince1970:(NSTimeInterval)seconds
Di solito trovo metodo di denominazione di Swift per essere più pulita di Objective-C di, ma i metodi init può essere un'eccezione.
fonte
2015-10-25 14:28:35