En Swift tanto las estructuras como las clases son fundamentales para hacer un proyecto completo.

Las estructuras (structs) son uno de los pilares principales de Swift como lenguaje. Las estructuras representan unidades de información.

Las clases (class) son las partes esenciales que organizar y que dividen nuestra aplicación en diferentes archivos y dentro de estos en diferentes métodos que nos permiten estructurar todo.

Las estructuras y las clases tiene mucho en común. Ambas pueden:

  • Definir propiedades para guardar valores

  • Definir métodos para proveer funcionalidades

  • Definir sub-scripts para proveer acceso a sus valores usando la sintaxis del sub-script

  • Definir inicializadores  para configurar en estado inicial

  • Para ser extendidos y expandir su funcionalidad más allá de su implementación por defecto

  • Ajustar protocolos para proveer funcionalidades estándares de cierto tipo.

Las clases tienen capacidades adicionales que las estructuras no tienen:

  • La inner-herencia permite una clase heredar las características de otra clase.

  • El type-casting te permite revisar e interpretar el tipo de instancias dentro de una clase al crear un runtime.

  • Los des-inicializadores permiten a la instancia de una clase liberar cualquier recurso que se le haya asignado.

  • El conteo de referencias permite a que más haya más de una referencia a la instancia de una clase.

Por otro lado, las enumeraciones (enums) en Swift son elementos de primera clase. Ellos adoptan muchas funcionalidades tradicionalmente soportadas por las clases, como propiedades computadas que proveen información adicional sobre los valores actuales de las enumeraciones, y métodos de instancias que proveen funcionalidades relacionadas a los valores que las enumeraciones representan, entre otras cosas.

Para conocer mejor todos estos elementos del código, nuestros ingenieros Jordi Serra y Pierluigi Cifani nos presentaron “Swift – Estructuras“.

Puedes descargar su presentación: Swift: structs, enums and classes.

Para mayor información sobre las clases y estructuras, puedes visitar la página de Apple para developers.