Ruta de aprendizaje de Swift
Comprende Ruta de aprendizaje de Swift desde los fundamentos hasta los criterios de decisión de la práctica profesional.
LANGUAGE · 52 ARTICLES
Comprende Swift y Objective-C desde los fundamentos hasta los criterios de decisión de la práctica profesional.
Mapa del tema
Comprende Ruta de aprendizaje de Swift desde los fundamentos hasta los criterios de decisión de la práctica profesional.
Comprende Tipos y memoria desde los fundamentos hasta los criterios de decisión de la práctica profesional.
Comprende Concurrencia en Swift desde los fundamentos hasta los criterios de decisión de la práctica profesional.
Comprende Objective-C desde los fundamentos hasta los criterios de decisión de la práctica profesional.
Empieza aquí
Una ruta desde los fundamentos hasta el siguiente paso.
El primer obstáculo al aprender Swift es Optional. El signo de interrogación de String?, if let, guard let, ! y ??. Como hay muchas formas sintácticas, memorizarlas por separado puede mezclar fácilmente las reglas.
Leer artículoEn el capítulo sobre closures dejamos pendiente una pregunta al explicar cómo romper ciclos de referencias con [weak self]. También existe unowned: ¿qué diferencia hay y cuándo se usa? Para responder, primero hay que ver cómo funciona ARC internamente.
Leer artículoEn await se detiene la función, no el hilo. Explicamos el significado exacto de la suspensión: la función guarda su estado en el heap y devuelve el hilo al pool cooperativo, y por qué un await secuencial no es ejecución paralela.
Leer artículoTodos los artículos
En 2019, tras Swift 5 e iOS 12.2, las apps redujeron su tamaño gracias a la estabilidad del ABI. Resumimos cómo el runtime de Swift pasó de cada app al sistema operativo, junto con la estabilidad de módulos y las ventajas y desventajas de @frozen.
Leer artículoEl eje síncrono/asíncrono indica quién controla la finalización de la tarea, mientras que bloqueante/no bloqueante indica si el control se devuelve de inmediato. Aquí se explica por qué los dos ejes independientes generan las cuatro combinaciones 2×2, con ejemplos de Swift.
Leer artículoLos recursos que solo tienen sentido cuando son únicos, como los descriptores de archivo o los bloqueos, no deben copiarse. Aquí se explica cómo marcar la no copiabilidad en un tipo con ~Copyable de Swift 5.9, junto con borrowing, consuming e inout y sus usos.
Leer artículoLos macros de Swift 5.9 son plugins de generación de código conectados al compilador. Explicamos cómo reciben el árbol sintáctico y devuelven código, sus dos variantes —freestanding(#) y attached(@)— y el coste de crearlos.
Leer artículoEl tamaño de un struct no es la suma simple de sus propiedades. Resumen de mediciones de size, stride y alignment, padding, Optional con extra inhabitant y el existential container de 64 bits.
Leer artículoLas llamadas a métodos se compilan como llamadas directas, vtable u objc_msgSend. Explicamos por qué final y private mejoran el rendimiento, la trampa de las extensiones de protocolos y cómo verificarlo con un profiler.
Leer artículoAl añadir un observador, el runtime sustituye dinámicamente la clase del objeto por una subclase. Aquí se explica isa-swizzling, por qué class miente y cuándo no hay notificaciones sin pasar por el setter.
Leer artículoLa concurrencia estructurada responde quién garantiza el final de las tareas asíncronas. Resume por qué las tareas hijas no salen del ámbito padre, cómo se propaga la cancelación y qué garantías debes recuperar manualmente al usar Task.detached.
Leer artículoAl activar el modo Swift 6 aparecen errores de concurrencia por todas partes, y Sendable suele ser el protagonista. Este artículo explica qué significa este protocolo y si los valores pueden cruzar límites de aislamiento, con una ruta de migración basada en convertir a struct, hacer inmutable y promover a actor.
Leer artículoLas categorías no pueden añadir ivar, pero sí asociar valores mediante Associated Objects. Aquí se explica cómo se almacenan en una tabla lateral junto al objeto, cómo implementar propiedades de categoría y la política de memoria en la que solo hay que vigilar assign.
Leer artículoLos delegates y las closures resuelven las mismas necesidades de callback, pero tienen características distintas. Implementamos el mismo ejemplo en paralelo para mostrar cinco diferencias prácticas y resumir cómo elegir según el número de eventos, la duración de la relación y la necesidad de un valor de retorno.
Leer artículoactor es el cuarto tipo de Swift y protege su propio estado. Explicamos cómo serializar el acceso permite al compilador detectar carreras de datos, incluida la trampa clásica de la reentrada.
Leer artículo