Novedades Xcode 14
Novedades Xcode 14

Xcode 14 | Novedades

Novedades sobre Xcode 14 y todas las mejoras que incluye, como autocompletar, push notifications en el simulador, compilación más rápida, canvas de SwiftUI mejorado, SF Symbols incluidos dentro de la libería de Xcode, etc

SwiftBeta

Tabla de contenido

Aprende las novedades que debes saber sobre Xcode 14

Hoy en SwiftBeta vamos hacer una repaso de todas las novedades introducidas en Xcode 14. Apple como cada año saca una versión del IDE que nos permite crear apps en las distintas plataformas: iPhone, iPad, Mac, etc. Y este año como era de esperar han sacado Xcode 14 con varias novedades y mejoras que vamos a ver hoy.

Vamos a entrar en detalle en muchas de ellas, pero como conceptos generales quiero que te quedes con estos.

  • Xcode 14 ocupa menos gigas que sus antecesores. Ya que podemos descargar otras plataformas on demand. ¿Esto que significa? que si solo vas hacer apps para iOS, no es necesario que instales en tu máquina todo lo necesario para hacer una aplicación para macOS o watchOS. Bajar estos SDKs ocupa espacio en tu máquina.
  • También, han hechos mejorar en los tiempos de compilación y en linkado del código de nuestra app
  • Es por eso que es importante tener actualizado Xcode, en cada nueva versión hay error corregidos y mejoras que nos ayudan a nosotros, los desarrolladores.

La aplicación que he usado para hacer este video ha sido la que hicimos del curso de Firebase, la que creamos para poder guardar enlaces (URLs) y así leerlos más tarde. Podéis descargar el código completamente GRATIS de mi cuenta de Github, os dejo el enlace:

GitHub - SwiftBeta/Curso-Firebase
Contribute to SwiftBeta/Curso-Firebase development by creating an account on GitHub.

¿De dónde descargar Xcode?

Si necesitas descargar Xcode puedes ir al siguiente enlace:

Sign In - Apple

Aquí podrás descargar todas las versiones de Xcode que quieras, y en este caso nos vamos a bajar la beta de Xcode 14.

Aquí te dejo dos enlaces para descargar Xcode y Xcode beta

¿Cómo descargar Xcode?

¿Cómo descargar Xcode?

¿Cómo descargar la Beta de Xcode?

¿Cómo descargar Xcode Beta?

Release notes Xcode

A parte de descargar Xcode, también puedes consultar qué mejoras han añadido. Cada versión dispone de unas release notes para que eches un vistazo, en este caso puedes ver las release notes de Apple en el siguiente enlaces:

Apple Developer Documentation

Esta página es muy útil, guardatela para futuras versiones de Xcode, y no tienen que ser mayor versions sino que pueden ser minor, con esto me refiero a que cuando actualicen a Xcode 14.0.1 o Xcode 14.1 verás la releases notes de esas versiones aquí.

¡Empezamos!


Compilation

Ahora al compilar podemos ver un listado de dispositivos recientes. De esta manera es más fácil ir a los simulador que solemos utilizar. También podemos filtrar, por ejemplo, podemos filtrar por "max" y solo aparecen los dispositivos que sean max.

Xcode 14 con simuladores recientes
Xcode 14 con simuladores recientes

Autocompletar

INIT
Ya que estamos aquí, vamos a ver funciones de autocompletar. Ahora si tenemos una clase (o una struct) con propiedades, podemos escribir en Xcode init, y aparece la opción de que nos cree el inicializador por nosotros, sin tener que escribir 1 a 1 los parámetros con todas las propiedades de la struct o class.

Autocompletado del init en Xcode 14
Autocompletado del init en Xcode 14

DECODABLE
A parte de que Xcode nos crea el init con todas las propiedades, también nos crear el init con su enum CodingKeys si conformamos el protocolo decodable. Es decir, si ahora a Developer le indicamos que conforma el protocolo Decodable, al escribir init, podemos escoger entre el que hemos visto hace unos minutos, o el init con el decoder. Al pulsarlo nos crea el enum CodingKeys y el init con el Decoder.

Autocompletado de Decodable en Xcode 14
Autocompletado de Decodable en Xcode 14

La verdad que nos ahorra mucho tiempo, y luego nosotros podemos crear nuestras propias customizaciones.

PÁRAMETROS CON VALORES POR DEFECTO
Ahora imagina que tenemos el init inicial, en el que no conformamos el protocolo Decodable. Si queremos crear una instancia de Developer vemos que aparecen todos los parámetros (hasta aquí nada raro.)

Init en Xcode 14
Init en Xcode 14

Si modificamos nuestro init, y por ejemplo en el parámetro language añadimos que es Swift, vamos a ver qué muestra el init cuando queremos crear una instancia de Developer.

Init con valores por defecto en Xcode 14
Init con valores por defecto en Xcode 14

Vemos que diferencia entre los parámetros donde sí tenemos que añadir un valor y los que tienen un valor por defecto (y no son un requisito para crear la instancia de Developer). Fíjate que si pulsamos enter aparecen solo los parámetros necesarios como name y age. Pero ¿cómo podemos hacer para pasarle el language? Podemos pulsar la teclas OPTION+ENTER

Mostrar todos los parámetros del init en Xcode 14
Mostrar todos los parámetros del init en Xcode 14

De esta manera podemos añadir todos los parámetros que espera el init de Developer.

INDENTACIÓN
Ahora con Xcode 14 si abrimos un scope, ya sea una función, o if por ejemplo. Al añadir la lógica y cerrar las llaves, si tenemos alguna línea que no está correctamente indentada, Xcode lo corrige por nosotros.


Callers

Ahora podemos ver en nuestro códigos desde dónde llamamos a un método. Antes también lo podíamos ver, pero la opción estaba más oculta. Ahora pulsamos COMMAND+CLICK en un método y podemos ver las distintas partes desde donde llamamos a nuestro código.

Callers en Xcode 14
Callers en Xcode 14

Ancla al hacer Scroll

Ahora la hacer scroll dentro de nuestro código, tenemos un pequeño header que se queda anclado arriba del todo, indicando dónde tenemos el cursor, es decir, nos permite tener una mejor continuación de seguir desarrollando sin pensar tanto por dónde íbamos, es una guía muy útil.
Por ejemplo, si nos vamos a una vista cualquiera de SwiftUI y hacemos Scroll, podemos ver que se queda anclado el nombre de la vista, la variable body e incluso alguna función.


Canvas SwiftUI

Completamente interactivo, no hace falta activarlo como en otras versiones de Xcode. Ahora si añadimo un Button podemos pulsarlo directamente en el canvas.

VARIANTES
Ya que estamos hablando del canvas, ahora tenemos una nueva opción para poder probar nuestra vista con distintos tamaños de texto, con el modo oscuro y una muy útil con distintas orientaciones. Vamos a ver una a una.

Diferentes variantes en SwiftUI con Xcode 14
Diferentes variantes en SwiftUI con Xcode 14

Iconos

Ahora podemos acceder directamente los iconos de SF Symbols directamente desde Xcode 14. Solo debemos pulsar COMMAND+SHIFT+L y aparece la librería. Aquí dentro podemos ir a la nueva sección llamada Symbols.

Iconos de SF Symbols dentro de Xcode 14
Iconos de SF Symbols dentro de Xcode 14

Hablando de iconos, antes necesitábamos una barbaridad de iconos de nuestra app para poder subir una app al app store y que estuviera bien adaptada a diferentes secciones y dispositivos. Ahora solo necesitamos una única imagen de 1024x1024.

Icono de la app de 1024x1024
Icono de la app de 1024x1024

¡Una maravilla!


Parallel building

Ahora Xcode nos da la posibilidad de ver cómo se compila nuestra app. Si tu app tiene muy pocos ficheros puede que no te des cuenta de la importancia de esta herramienta, pero cuando tu app tiene miles de ficheros es muy importante saber cómo se compila y linka nuestro código. De esta manera podemos eliminar cuellos de botella y ver cómo mejorar las dependencias entre módulos, o clases.

Build with timing Summary en Xcode 14
Build with timing Summary en Xcode 14

Y una vez ha finalizado nos aparece el siguiente grafo, donde podemos ver exactamente como se ha compilado el código de terceros que estamos usando (en este caso de Firebase), también vemos como se ha compilado nuestro código, su linkado, generación de los dSyms, y la ejeción de un custom script que tenemos al final del todo para Crashlytics, etc

Ejemplo de Build with timing Summary en Xcode 14
Ejempo de Build with timing Summary en Xcode 14

Build documentation

También podemos generar documentación de nuestro código, en este caso vamos a generar toda la documentación de nuestra app.

Documentación de nuestra app en Xcode 14
Documentación de nuestra app en Xcode 14

Una vez generado, podemos pulsar COMMAND+SHIFT+0 para abrir la documentación tantas veces como queramos. Y ahora siempre habrá una sección de nuestra app. Parece algo muy sencillo, pero es increible poder navegar entre todos los tipos y métodos de tu app para buscar qué hacen ciertas partes de tu código y encima se ha generado al momento.


Organizer

En la sección organizer tendremos dos secciones nuevas. Una para los feedbacks y el otro para Hangs.

Sección Feedback en el Organizer de Xcode 14
Sección Feedback en el Organizer de Xcode 14

En la sección de los feedbacks podemos ver mensajes que nos han enviado los users a los que les hemos distribuidos nuestra app por Testflight. De esta manera podemos ver un mensaje, con la información del dispositivo, etc y podemos ver el email del tester por si queremos ponernos en contacto y pedirle más información.

La otra novedad es Hangs, en esta sección podemos ver qué partes podemos mejorar de nuestro código ya que aparece toda la traza completa

Sección Hangs en el Organizer de Xcode 14
Sección Hangs en el Organizer de Xcode 14

Dándonos información de dónde podemos aplicar optimizaciones y por lo tanto nuestra app funcione mejor a los usuarios.


Debug Memory graph

Siempre ha ido bien usar esta herramienta de Xcode para encontrar leaks de memoria y corregirlos. De esta manera podemos detectar que nuestra app usa los recursos necesarios de memoria y los va liberando.

Pues con la nueva versión de Xcode han vitaminado esta herramienta para que seamos capaces de ver todas las referencias que tienen nuestras instancias en memoria.

Debug memory graph en Xcode 14
Debug memory graph en Xcode 14

Swift Package Plugins

Los Swift Package Plugins son una novedad en Xcode 14 y nos ayudan a extender funacionalidades de Xcode. Podemos crear dos tipos de plugins, los Command Plugin y Build tool plugin. Los primeros pueden por ejemplo modificar nuestros ficheros, como formatear nuestro código o ser una parte de nuestro workflow. Los segundos generan recursos o assets como parte de una build, es decir se ejecutan antes o durante un compilación de nuestro código. Sobre los Swift Package dedicaré un video entero ya que tienen mucho potencial.


Otras Novedades

Otra cosas que han aparecido pero que no hemos probado han sido:
- La posibilidad de enviar Push Notifications a un simulador. Hasta ahora solo era posible enviar push notifications a devices reales.

Si quieres seguir aprendiendo sobre SwiftUI, Swift, Xcode, o cualquier tema relacionado con el ecosistema Apple