16 ago. 2026
La adopción de la concurrencia estricta de Swift ha convertido el aislamiento en una parte esencial del diseño de una API. Ya no basta con saber que una implementación termina actualizando la interfaz: el compilador también necesita conocer desde qué dominio de aislamiento puede invocarse cada operación.
Esta diferencia se vuelve especialmente importante al trabajar con protocolos. Colocar @MainActor sobre un protocolo completo, sobre uno de sus requisitos o sobre una conformidad no expresa lo mismo. Aunque las tres formas se parecen visualmente, cada una establece un contrato distinto para los tipos que adopten ese protocolo.
Leer articulo15 ago. 2026
Binding es una de las piezas fundamentales del flujo de datos en SwiftUI. Permite que una vista lea y modifique un valor cuya propiedad pertenece a otro ámbito, sin convertirse por ello en su fuente de verdad. En los casos sencillos, el propio framework crea esa conexión mediante la sintaxis $: un TextField recibe $model.name, un Toggle recibe $settings.notificationsEnabled y la vista no necesita saber dónde se almacena realmente el dato.
Leer articulo14 ago. 2026
Una de las ventajas más importantes del sistema Observation es su rendimiento. Cuando una vista lee una propiedad de un modelo marcado con @Observable, SwiftUI registra esa dependencia concreta. Si después cambia otra propiedad del mismo objeto que la vista no utiliza, su body no necesita volver a evaluarse.
Sin embargo, observar por propiedades no resuelve de por sí todos los cálculos innecesarios. También importa qué entiende Swift por «cambio». En las versiones actuales de la macro @Observable, el tipo de la propiedad determina si una asignación con el mismo valor genera una notificación. Una conformidad aparentemente sencilla como Equatable puede evitar reevaluaciones completas de una vista.
Leer articulo13 ago. 2026
SwiftUI siempre ha defendido que la interfaz debe ser una consecuencia del estado. Si existe un dato, se muestra una vista; si el dato desaparece, también lo hace su representación. Sin embargo, hasta ahora las alertas y los diálogos de confirmación no terminaban de encajar en ese modelo. En muchos casos había que combinar un Binding<Bool> con otro valor que almacenase el elemento sobre el que debía actuar la presentación.
Leer articulo12 ago. 2026
SwiftUI utiliza el los entornos para propagar configuraciones y dependencias a través de la jerarquía de vistas. Valores del sistema como locale, colorScheme o dynamicTypeSize llegan por esta vía, pero también podemos definir los nuestros propios mediante el macro @Entry.
La sintaxis es tan sencilla que resulta fácil pasar por alto un detalle importante: el valor por defecto no debe cambiar cada vez que SwiftUI lo consulta. Si la expresión crea una instancia nueva en cada acceso, una dependencia que parecía constante puede provocar reevaluaciones innecesarias de las vistas.
Leer articulo