pizza international food day swift nsdate

swift - pizza - international food days



Swift 3: ¿Fecha vs NSDate? (5)

¿Cuál es la diferencia entre las clases NS y no NS? Particularmente NSDate vs Date ? ¿Representa NS algún tipo de envoltorio alrededor de la funcionalidad central no NS ?


Además de las respuestas dadas anteriormente, en un sentido de diseño literal más superficial, NS era un prefijo dado a todo en los días NextStep, antes de que Steve Jobs fuera llamado nuevamente a Apple, y por lo tanto era una parte natural de la sintaxis de Objective-C.

Avance rápido para el desarrollo de Swift, necesitaban un punto de diferencia obvia, y bien podría haber sido CL como un prefijo, (para Chris Lattner) pero obviamente eligió tener una ausencia de cualquier prefijo


La diferencia entre las clases NS y no NS es que las clases NS son de tipo referencia, mientras que las clases no NS son de tipo valor. En Swift 3, Apple ha introducido las clases Foundation como NSDate y las ha vuelto a nombrar hasta fecha, pero dado que swift se basa en tipos de valores en lugar de tipos de referencia, Date es un tipo de valor. Por ejemplo:

let date = NSDate() //1 date.dateByAddingTimeInterval(1000) //2

2. Es permisible ya que aunque la fecha es constante, la mutabilidad depende de la clase en lugar de la variable variable.

mientras

let date = Date() //3 date.dateByAddingTimeInterval(1000) //4

4. no está permitido no permitido y daría como resultado un error ya que let hace que ''date'' sea una constante con ''let'' como date es Date () tipo que es un tipo de valor.


Las clases de NS son clases de Objective-C. Como Objective-C es el lenguaje de programación más antiguo para aplicaciones iOS o MacOS, Swift le permite usar las estructuras de esas clases en su código. Por lo tanto, puede migrar aplicaciones de Objective-C a Swift si lo desea.

Las clases o estructuras no NS son los equivalentes Swift de las clases o estructuras NS. Puedes leer más sobre este tema here o here .

Pero tenga en cuenta: como Objective-C y Swift son diferentes lenguajes de programación, puede suceder que las clases NS y no NS no funcionen completamente de la misma manera.


Swift 3 introdujo algunos nuevos tipos de valores de superposición para los tipos de clases Foundation existentes, como Date para NSDate , Data for NSData y algunos más. La lista completa y los detalles se pueden encontrar en

Algunas de las razones fueron

  • Proporcionar valor semántico adecuado,
  • let y var lugar de variantes mutables e inmutables,
  • más "Swifty" APIs.

Los nuevos tipos de superposición deben proporcionar toda la funcionalidad que tiene el tipo de Fundación correspondiente, pero si es necesario, siempre puede convertir de un tipo a otro.

Cuando las API de Foundation existentes se importan a Swift, los tipos se puentean automáticamente.

Con respecto a Date y NSDate : Date es un tipo de valor y puede ser una constante o variable:

var date = Date() date += 10.0 // Add 10 seconds

mientras que NSDate es un tipo de referencia e inmutable. También la Date es Comparable

let date1 = Date() let date2 = Date() if date1 < date2 { }

mientras que NSDate s solo se puede comparar con .compare() .

Observación: Para estos "tipos de superposición", el tipo de valor (estructura) como Date y su contraparte de Fundación (clase) como NSDate son tipos diferentes y ambos se pueden usar desde Swift. No debe confundirse con

donde el prefijo NS simplemente se ha eliminado para ciertas clases de Foundation, por ejemplo, NSBundle cambia su nombre a Bundle para Swift 3.


NSDate y Date no son lo mismo. Las clases NS (siguiente paso) se utilizan en el momento actual solo en Objective-C, por lo que en Objective-C representa una variable de fecha NSDate.

En lo que respecta específicamente a Swift 3.0, la última versión de Swift Apple ha eliminado por completo la necesidad de usar el prefijo NS para cualquiera de los tipos. Entonces, solo en Swift tres ahora usamos Date en lugar de NSDate. para hacer que su código se vea más limpio