style objective example dateformat iphone ios4 nsdateformatter

iphone - objective - swift 4 dateformatter time



El método de inicio de NSDateFormatter está en desuso. (7)

El código de ejemplo en la referencia de clase todavía usa el método init , así que diría que es seguro usarlo en tu propio código.

Por

http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html

El método init de NSDateFormatter es "Disponible en iPhone OS 2.0 a través de iPhone OS 3.2" y, por lo tanto, no en 4.0. Ahora, ciertamente funciona, pero parece extraño. ¿Es esto un error o hay alguna otra forma de crear un NSDateFormatter ?


Esta desaprobación es solo una limpieza de los encabezados de NSDateFormatter. init ya está declarado en NSObject del que NSNumberFormatter hereda. Redeclar no es necesario, sin embargo, en la implementación apple anulará init ya que la subclase debería proporcionar implementaciones para el inicializador predeterminado de la superclase.


Utilizo el método init en múltiples aplicaciones iOS4 y están aprobados y en la tienda. No puedo pensar en ninguna forma de hacerlo funcionar, así que parece que es solo un error en los documentos.


Confiaría en los archivos de encabezado sobre la documentación.

Por ejemplo, los comportamientos de formateador y las versiones de sistema operativo parecen contradecirse a sí mismos:

De forma predeterminada, en Mac OS X v10.4 las instancias de NSDateFormatter tienen el mismo comportamiento que en Mac OS X versiones 10.0 a 10.3. En Mac OS X v10.5 y posterior, NSDateFormatter predeterminada en el comportamiento 10.4+.

Si inicializa un formateador usando initWithDateFormat:allowNaturalLanguage: está (por razones de compatibilidad con versiones anteriores) creando un formateador de fecha "antiguo". Para usar el nuevo comportamiento, inicializa el formateador con init . Si es necesario, puede establecer el comportamiento de clase predeterminado utilizando setDefaultFormatterBehavior: , puede establecer el comportamiento para una instancia utilizando setFormatterBehavior: message con el argumento NSDateFormatterBehavior10_4 .

Suena como initWithDateFormat:allowNaturalLanguage: es realmente el método obsoleto?


Eso es realmente extraño. Tal vez +[NSDateFormatter new] hará el trabajo?


Puede NSDateFormatter sí mismo que NSDateFormatter tiene un comportamiento diferente que depende del inicializador que elija y del SDK con el que está compilando. Lo siguiente se prueba con SDK 10.5 y 10.6.

NSDateFormatter* df = [[NSDateFormatter alloc] initWithDateFormat:@"yyyyMMdd" allowNaturalLanguage:NO]; if ([df formatterBehavior] == NSDateFormatterBehavior10_0) NSLog(@"NSDateFormatterBehavior10_0"); else if ([df formatterBehavior] == NSDateFormatterBehavior10_4) NSLog(@"NSDateFormatterBehavior10_4");

Esto devuelve NSDateFormatterBehavior10_0 .
En cambio, cuando usa [[NSDateFormatter alloc] init]; el comportamiento es NSDateFormatterBehavior10_4 .


Como dijo falconcreek aquí , Apple solo está borrando los documentos.

Eso significa que originalmente, - (id) init ha sido redeclarado en el archivo de encabezado NSDateFormatter. Eso fue innecesario y alguien simplemente lo eliminó más tarde. La documentación probablemente se genera automáticamente y no se detectó que era solo la redeclaración que estaba en desuso.

En resumen, use init como lo desee con NSDateFormatter !