¿Qué hay de nuevo en Swift 3?

Introducción

Este mes de septiembre, Apple lanzó oficialmente la última versión de su nuevo lenguaje de programación, Swift 3. Al igual que Swift 2 el año pasado, esta versión contiene muchas características nuevas y mejoras que hacen que la programación con Swift sea aún mejor.!

Swift 3 se incluye con Xcode desde la versión 8.0 y también se puede descargar desde el sitio web swift.org.

1. Utilizando Swift 3

Si desea utilizar Swift 3 en sus proyectos actuales o futuros, Xcode proporciona una excelente herramienta de migración para que pueda hacerlo fácilmente..

Para los nuevos proyectos Swift creados con Xcode 8, Swift 3 se utilizará automáticamente. Al abrir un proyecto Swift 1 o 2 en Xcode 8 por primera vez, se le presentará una alerta para convertir su código a código Swift 3 o Swift 2.3. 

La elección de Swift 2.3 le dará acceso a todas las nuevas API de iOS 10, macOS Sierra, tvOS 10 y watchOS 3, pero seguirá utilizando la sintaxis de Swift 2. Alternativamente, puede elegir no convertir su código de inmediato y continuar usando una versión anterior de Swift. Cuando esté listo, puede ir a Editar> Convertir> A la sintaxis Swift actual ...  en la barra de menú de Xcode para convertir todo tu código.

La herramienta de migración se encarga de todos los cambios que deben realizarse en su código para adoptar Swift 3 de Swift 2. Esto incluye cambiar el método y los nombres de propiedad, cambiar la sintaxis cuando sea necesario y muchas otras cosas. Antes de completar la conversión, Xcode le mostrará los cambios pendientes para cada uno de sus archivos de código Swift. Esto significa que puede verificar todos los cambios antes de que se realicen, solo para asegurarse de que la herramienta de migración no esté introduciendo errores en su proyecto.

2. fundacion

Una parte importante de la versión Swift 3 fue la nueva biblioteca de base de código abierto. Si bien los desarrolladores experimentados de macOS e iOS estarían familiarizados con el marco de Foundation, esta biblioteca trae algunas características nuevas para los programadores de Swift.. 

El primer cambio inmediato que notará cuando use las nuevas API de Foundation es la falta de un NS prefijo. Esto significa que clases como NSDate, NSTimer y NSURL ahora son justos Fecha, Minutero y URL en el código Swift. La herramienta de migración de código en Xcode 8 cambiará automáticamente el nombre de todas estas clases, pero este es un cambio que todos los desarrolladores de Swift deben tener en cuenta al escribir un nuevo código..

A continuación, al ser una biblioteca central de Swift, todas las API de Foundation ahora son compatibles con los sistemas operativos basados ​​en Linux. Como Swift se hace compatible con otras plataformas, también lo hará la biblioteca de la Fundación. Esto significa que el conjunto principal de funciones proporcionadas por Foundation, como la gestión de la fecha / hora y las redes, se puede utilizar en cualquier lugar donde se pueda usar Swift. Esta interoperabilidad multiplataforma fue una de las principales motivaciones para eliminar la NS prefijo de las API de Foundation.

Por último, muchas de las API de Foundation ahora se han rediseñado para encajar mejor con el código Swift. Por ejemplo, dependiendo de la API, este rediseño significa que Foundation ahora puede aprovechar mucho mejor:

  • El manejo mejorado de errores usando tratar y captura Bloques que se introdujeron con Swift 2..
  • Tipos opcionales, en contraste con todos los tipos opcionales desempaquetados implícitamente que se crearon al importar el marco de la Fundación Objective-C en Swift.
  • Algoritmos más modernos y optimizados..
  • Mejor rendimiento general al estar escrito en Swift puro, que a su vez está altamente optimizado.

En general, usar la nueva biblioteca de la Fundación Swift es una experiencia mucho mejor en comparación con el uso del marco de la Fundación anterior en su propio código Swift. Si desea obtener más información sobre la biblioteca de código abierto de Swift Foundation, puede consultarla en GitHub.

3. Pautas para nombrar API

Swift 3 también introduce algunas nuevas pautas de diseño de API. Estos se crearon en un esfuerzo por simplificar todas las API de Swift además de hacerlas consistentes. 

Omitir palabras innecesarias

El primer cambio en Swift 3 para hacer mejores API fue eliminar palabras innecesarias de declaraciones de métodos y propiedades. Este cambio actúa como una función de lenguaje al importar API de Objective-C y también afecta a las pautas para que los desarrolladores escriban su propio código Swift. El siguiente código contiene algunos ejemplos de código Swift 2 en comparación con el código Swift 3 funcionalmente idéntico.

let color = UIColor.redColor () // Swift 2 let color = UIColor.red // Swift 3 "Hello World!". capitalizedString // Swift 2 "Hello World!". mayúscula // Swift 3 // Swift 2 if someString .containsString ("a")  // Swift 3 si someString.contains ("a") 

Verás que las versiones Swift 3 son más legibles. los Si Las declaraciones en particular tienen un mejor flujo y se parecen más a una oración en inglés..

Etiquetas de parámetros de funciones

Swift 3 en realidad deshace uno de los cambios realizados en Swift 2: el etiquetado del primer parámetro en una función. En Swift 2, la etiqueta del primer parámetro se ignoró automáticamente al llamar a la función. Por ejemplo, una función declarada como:

func addObject (objeto: AnyObject)

Sería llamado en Swift 2 por el siguiente:

addObject (someObject)

Swift 3 invierte este cambio y ya no ignora la primera etiqueta de parámetro automáticamente. Esto significa que la función anterior se llamará con lo siguiente:

addObject (objeto: someObject)

Esta función de uso, sin embargo, ahora va en contra de la omite palabras innecesarias objetivo de Swift 3. Para seguir las nuevas pautas de diseño de Swift API, la declaración de función debe cambiarse a:

func add (objeto: AnyObject)

Esta nueva declaración sería utilizada con el siguiente código:

add (objeto: someObject)

Este nuevo formato de nombres de funciones fluye como el formato Swift 2, pero tiene la ventaja adicional de proporcionar una etiqueta que está claramente vinculada al primer parámetro de la función..

Tenga en cuenta que todavía puede especificar que el primer parámetro que etiqueta su función Swift 3 se deba ignorar. Esto se logra utilizando un _ y luego un nombre de parámetro para usar dentro de la definición de la función, por ejemplo:

// Definición func add (_ object: AnyObject) // Acceda al parámetro a través de las variables 'object' // Usage add (someObject)

Si bien este fue un ejemplo muy básico, este nuevo formato de funciones de declaración se vuelve extremadamente beneficioso con nombres más complicados. Por ejemplo, el siguiente código muestra cómo algunos de los Swift Cuerda Los métodos ahora han cambiado de Swift 2 a Swift 3.

let replacement = someString.stringByReplacingOccurencesOfString ("a", withString: "A") // Swift 2 let replacement = someString.replacingOccurences (of: "a", with: "A") // Swift 3 let array = listString.componentsSepated (",") // Swift 2 let array = listString.components (separadosBy: ",") // Swift 3

Funda de camello inferior para enumeraciones y propiedades

Este cambio apunta a dar consistencia a todas las propiedades en Swift 3, así como a las enumeraciones. Se decidió que, como los valores de enumeración están más cerca de las propiedades que de las clases, deberían seguir el mismo formato de denominación.. 

Este es un cambio relativamente menor y que la herramienta de migración de Xcode se encargará completamente al convertir el código Swift 2. Sin embargo, es algo que todos los desarrolladores deben tener en cuenta al escribir un nuevo código.. 

Los siguientes son algunos ejemplos de cómo este cambio afecta a las API particulares.

let color = UIColor.redColor (). CGColor // Swift 2 let color = UIColor.red.cgColor // Swift 3 let align = NSTextAlignment.Center // Swift 2 let align = NSTextAlignment.center // Swift 3

4. Grand Central Dispatch

Junto con Swift 3, también se lanzó la versión de código abierto Swift de la biblioteca principal de Grand Central Dispatch (GCD). GCD es el marco de Apple para permitir la ejecución de código concurrente en sistemas multinúcleo. Los principales objetivos de la reescritura de esta biblioteca son:

  • Proporcione la misma funcionalidad que las funciones GCD basadas en C existentes con API que están diseñadas para funcionar y leer bien junto con otro código Swift.  
  • Proporcionar un conjunto de API multiplataforma que, como la biblioteca central de Foundation, se podrán usar siempre que Swift sea compatible.

Para los desarrolladores que tienen experiencia con las API de GCD en las plataformas Apple, esta nueva versión de Swift será fácil de entender. Sigue los mismos conceptos. El siguiente código muestra cómo algunas tareas comunes de GCD ahora se pueden hacer con el código Swift 3:

// Trabajando en un subproceso en segundo plano let queue = DispatchQueue (label: "threadName") queue.async // Execute work // Haciendo trabajo en el thread principal DispatchQueue.main.async // Execute work // Haciendo trabaje con una 'Calidad de servicio' especificada, deje calidad = DispatchQoS.background queue.async (qos: calidad) // Ejecutar trabajo // Haciendo trabajo después de una cantidad de tiempo, retrase = DispatchTime.now () + .seconds ( 10) DispatchQueue.main.after (when: delay) // Execute work

Si desea obtener más información sobre la programación concurrente y el GCD en Swift 3, puede consultar la sesión WWDC de Apple de este año y la versión Swift de la referencia del marco de despacho..

5. Beneficios de Open Source

Si bien no es exactamente una nueva característica o cambio, Swift 3 es la primera versión desde que Apple abrió el lenguaje de programación en diciembre de 2015. Ser de código completamente abierto trae muchos beneficios, que se harán aún más evidentes en las versiones futuras de Swift..

En primer lugar, hacer que Swift y sus bibliotecas principales sean de código completamente abierto significa que los desarrolladores pueden usar Swift para trabajar en otras plataformas y sistemas operativos. Actualmente, Swift es compatible con todas las plataformas de Apple, además de las versiones modernas de Ubuntu. Sin embargo, con el tiempo, Swift puede ser portado a otros sistemas operativos, incluyendo Android y Windows. Esto tiene el potencial de hacer de Swift un lenguaje verdaderamente multiplataforma y ser usado más por desarrolladores que no sean de Apple.

A continuación, tener todos los trabajos internos de Swift visibles para el público significa que los empleados que no sean de Apple pueden contribuir al lenguaje. Además de las nuevas características, los desarrolladores expertos también pueden contribuir a la corrección de errores, mejoras y optimizaciones dentro de Swift.

En general, hacer que el código abierto de Swift traiga mejoras y características al lenguaje en un marco de tiempo más corto, ya que permitirá que más personas contribuyan a él. Si desea obtener más información sobre la naturaleza de código abierto de Swift, puede consultar el siguiente artículo:

  • Swift es de código abierto

    El 3 de diciembre, Apple hizo un movimiento audaz, convirtiendo uno de los lenguajes de código abierto más populares y de más rápido crecimiento de la industria. Descubre lo que significa para el ...
    Jordan Morgan
    Rápido

Conclusión

Le he mostrado algunos de los cambios más importantes que se introdujeron en el lenguaje Swift en la versión 3. Esta es una versión importante porque, además de todas las nuevas funciones y API de la biblioteca central, brinda una visión clara de cómo evolucionará Swift en años futuros. Si los cambios en Swift 3 son una indicación, el lenguaje solo se volverá más agradable para los desarrolladores..

Como siempre, asegúrese de dejar sus comentarios y comentarios en la sección de comentarios a continuación. Y echa un vistazo a algunos de nuestros otros cursos y tutoriales sobre el idioma Swift!