Si estás preparándote para dar el salto en tu carrera como iOS Developer, dominar los conceptos técnicos es fundamental. Las entrevistas técnicas pueden ser un desafío, especialmente con la rápida evolución del ecosistema de Apple. En este artículo, hemos recopilado la lista más completa de preguntas y respuetas de SwiftUI para entrevista, abarcando desde los fundamentos de la programación Swift hasta los secretos mejor guardados de Xcode y la arquitectura de aplicaciones.
Tanto si eres un desarrollador junior buscando tu primera oportunidad, como un senior repasando conceptos, esta guía rápida te ayudará a repasar todo lo que necesitas saber sobre Swift y SwiftUI.
Fundamentos de la programación Swift
- ¿Qué diferencia hay entre
letyvaren Swift?letdeclara una constante inmutable, mientras quevardeclara una variable cuyo valor puede cambiar. - ¿Cuál es la diferencia entre un
structy unaclass? Losstructsson tipos por valor (se copian) y lasclassesson tipos por referencia (comparten la misma instancia). - ¿Qué es un Optional en Swift? Es un tipo que representa la posibilidad de que una variable tenga un valor o sea
nil. - ¿Qué es el operador nil-coalescing (
??)? Proporciona un valor por defecto si el Optional evaluado esnil. - ¿Qué diferencia hay entre
guard letyif let?guard letrequiere un retorno temprano si la condición falla, manteniendo la variable disponible en el ámbito exterior;if letsolo hace disponible la variable dentro de su bloque. - ¿Qué es una tupla? Es un grupo ordenado de valores múltiples de cualquier tipo, tratados como un único valor compuesto.
- ¿Para qué sirve
typealias? Permite crear un nombre alternativo para un tipo de dato existente para mejorar la legibilidad del código. - ¿Qué es un
enum? Es un tipo que define un grupo de valores relacionados y permite trabajar con ellos de forma segura. - ¿Qué son los raw values en un enum? Son valores predeterminados (como enteros o cadenas) asignados a cada caso del enum.
- ¿Qué son los associated values en un enum? Permiten almacenar información adicional de diferentes tipos junto a cada caso específico del enum.
Funciones y Closures en Swift
- ¿Qué es un closure? Es un bloque de código autocontenido que puede ser pasado y utilizado en tu código, similar a las funciones anónimas.
- ¿Qué significa
@escapingen un closure? Indica que el closure será ejecutado después de que la función que lo recibe haya retornado. - ¿Qué es un
@autoclosure? Es un closure que se crea automáticamente para envolver una expresión que se pasa como argumento, retrasando su evaluación. - ¿Qué es un trailing closure? Es una sintaxis que permite escribir el closure fuera de los paréntesis de la función si es el último parámetro.
- ¿Qué hace la función
map? Aplica un closure a cada elemento de una colección y devuelve una nueva colección con los resultados. - ¿Qué hace la función
filter? Devuelve una nueva colección con los elementos que cumplen una condición específica. - ¿Qué hace la función
reduce? Combina todos los elementos de una colección en un solo valor utilizando un closure proporcionado. - ¿Qué diferencia hay entre
mapycompactMap?compactMaphace lo mismo quemap, pero elimina automáticamente los valoresnildel resultado. - ¿Qué hace
flatMap? Transforma los elementos y aplana estructuras anidadas (como un array de arrays) en una sola colección. - ¿Para qué sirve
inouten los parámetros de una función? Permite modificar el valor de un parámetro por valor dentro de la función y que el cambio persista fuera de ella.
Programación Orientada a Objetos y Protocolos
- ¿Qué es un protocolo en Swift? Es un plano o contrato que define métodos y propiedades que una clase, estructura o enum debe implementar.
- ¿Qué son las extensiones de protocolo? Permiten proporcionar implementaciones por defecto a los métodos de un protocolo.
- ¿En qué consiste el patrón Delegate? Es un patrón de diseño donde un objeto delega parte de sus responsabilidades a otro objeto a través de un protocolo.
- ¿Qué son los genéricos (Generics)? Permiten escribir código flexible y reutilizable que puede trabajar con cualquier tipo, sujeto a ciertos requisitos.
- ¿Qué es un associatedtype en un protocolo? Es un marcador de posición para un tipo que se definirá más adelante cuando se adopte el protocolo.
- ¿Qué significa
some View(Opaque Types)? Oculta el tipo de retorno exacto de una función, indicando que devuelve “algún” tipo que cumple con el protocoloView. - ¿Para qué sirve una
extension? Permite añadir nuevas funcionalidades (métodos, propiedades calculadas) a un tipo existente. - ¿Qué niveles de control de acceso existen?
open,public,internal,fileprivate, yprivate. - ¿Cuál es la diferencia entre
openypublic?openpermite que las clases sean heredadas y los métodos sobrescritos fuera del módulo,publicno. - ¿Qué significa la palabra clave
final? Impide que una clase sea heredada o que un método sea sobrescrito.
Memoria y ARC (Automatic Reference Counting)
- ¿Qué es ARC? Es el sistema que usa Swift para gestionar la memoria, liberando automáticamente los objetos cuando ya no son referenciados.
- ¿Cuál es la diferencia entre referencias
strongyweak?strongincrementa el contador de referencias protegiendo al objeto de ser liberado;weakno incrementa el contador y puede convertirse ennil. - ¿Qué es
unowned? Es similar aweak, pero asume que el objeto referenciado nunca seránilmientras se esté utilizando. - ¿Qué es un retain cycle (ciclo de retención)? Ocurre cuando dos objetos tienen referencias
strongmutuas, impidiendo que ARC los libere de la memoria. - ¿Por qué usamos
[weak self]en closures? Para evitar ciclos de retención cuando el closure captura al propio objetoself. - ¿Qué es una capture list? Es un arreglo escrito entre corchetes al inicio de un closure que define las reglas (ej.
weakounowned) de cómo se capturan las variables. - ¿Qué es
deinit? Es un bloque de código en una clase que se ejecuta justo antes de que el objeto sea destruido por ARC. - ¿Qué es una variable
lazy? Es una propiedad cuyo valor inicial no se calcula hasta la primera vez que se accede a ella. - ¿Qué son
willSetydidSet? Son observadores de propiedades que ejecutan código justo antes o inmediatamente después de que el valor de una propiedad cambie. - ¿Qué es una propiedad calculada (computed property)? Es una propiedad que no almacena un valor, sino que proporciona un getter (y opcionalmente un setter) para calcularlo al vuelo.
Fundamentos de SwiftUI
- ¿Qué es SwiftUI? Es el framework declarativo de Apple para construir interfaces de usuario en todas sus plataformas.
- ¿Qué es el protocolo
View? Es el protocolo central en SwiftUI; todo elemento visual debe conformar este protocolo e implementar la propiedadbody. - ¿Por qué
bodydevuelvesome View? Porque utiliza tipos opacos, permitiendo al compilador conocer el tipo exacto sin exponer la compleja jerarquía de tipos subyacente. - ¿Qué son los Modifiers (modificadores)? Son métodos que se aplican a una vista para cambiar su apariencia o comportamiento, devolviendo una nueva vista.
- ¿Qué diferencia hay entre
VStack,HStackyZStack?VStackapila vistas verticalmente,HStackhorizontalmente, yZStackunas encima de otras (en profundidad). - ¿Qué hace
@State? Declara un estado local en una vista; cuando su valor cambia, SwiftUI re-renderiza la vista automáticamente. - ¿Para qué sirve
@Binding? Crea una conexión bidireccional entre una vista que almacena los datos y otra vista que los modifica. - ¿Qué es
@ObservedObject? Se suscribe a un objeto externo (ObservableObject) para que la vista se actualice cuando sus datos cambien. No crea el objeto, solo lo observa. - ¿En qué se diferencia
@StateObjectde@ObservedObject?@StateObjectse utiliza para crear e inicializar el objeto observable, asegurando que no se destruya si la vista se recarga. - ¿Qué es
@EnvironmentObject? Permite inyectar un objeto observable en la jerarquía de vistas, de modo que cualquier vista hija pueda acceder a él sin pasarlo explícitamente.
Datos y Entorno en SwiftUI
- ¿Qué es
ObservableObject? Es un protocolo para clases cuyos cambios de estado pueden ser observados por SwiftUI. - ¿Qué hace el wrapper
@Published? Se usa dentro de unObservableObjectpara emitir notificaciones automáticamente cuando el valor de la propiedad cambia. - ¿Para qué sirve
@AppStorage? Es un property wrapper de SwiftUI que lee y escribe valores directamente enUserDefaults. - ¿Qué es
@SceneStorage? Almacena datos ligeros vinculados a una escena específica, útil para restaurar el estado en apps con múltiples ventanas o en el iPad. - ¿Qué son los
EnvironmentValues? Son variables globales del sistema (como el esquema de color o tamaño de fuente) accesibles mediante el property wrapper@Environment. - ¿Para qué sirve el protocolo
Identifiable? Requiere que el tipo tenga una propiedadidúnica, esencial para iterar colecciones en SwiftUI. - ¿Por qué usamos
Hashableen algunas Listas? Si un elemento no esIdentifiable, podemos usar\.selfen unForEach, lo cual requiere que el tipo conforme aHashable. - ¿Qué es un
ForEachen SwiftUI? Es una estructura que computa vistas bajo demanda a partir de una colección subyacente de datos identificables. - ¿Cuál es la diferencia entre
ListyLazyVStack?Listproporciona estilos predeterminados de tabla del sistema, mientras queLazyVStackes simplemente una pila vertical de carga perezosa y altamente personalizable. - ¿Cómo haces que el contenido sea desplazable? Envolviéndolo en un
ScrollView.
UI Avanzada y Arquitectura Visual
- ¿Qué es
GeometryReader? Es un contenedor que proporciona información sobre el tamaño y el área de coordenadas de su vista padre. - ¿Qué es un
ViewBuilder? Es un closure especial que permite construir múltiples vistas infantiles de manera declarativa. - ¿Para qué sirve
PreferenceKey? Permite que las vistas hijas pasen información hacia arriba en la jerarquía a sus vistas padres. - ¿Cuándo usarías la anotación
@ViewBuilder? Al crear funciones o propiedades personalizadas que necesitan devolver múltiples vistas o condicionales de vistas. - ¿Qué es
matchedGeometryEffect? Es un modificador que sincroniza y anima fluidamente la transición de una vista desde un lugar a otro en la pantalla. - ¿Qué son las
transitions(transiciones)? Definen cómo se anima una vista al insertarse o eliminarse de la jerarquía de vistas. - ¿Para qué sirve
withAnimation? Es un bloque explícito que le dice a SwiftUI que anime cualquier cambio de estado que ocurra dentro de él. - ¿Qué es el protocolo
Animatable? Permite crear animaciones complejas y personalizadas interpolando valores numéricos de una vista. - ¿Cuál es la diferencia entre
NavigationViewyNavigationStack?NavigationViewes el componente clásico (ahora obsoleto), mientras queNavigationStackes la nueva API (iOS 16+) para navegación orientada a datos. - ¿Cómo se crean pestañas en SwiftUI? Utilizando el contenedor
TabView.
Concurrencia y Combine
- ¿Qué son
asyncyawaiten Swift? Es el modelo de concurrencia estructurada que permite escribir código asíncrono de forma secuencial y legible. - ¿Qué es un
Task? Es una unidad de trabajo asíncrona; permite ejecutar códigoasyncdesde un contexto sincrónico como una vista de SwiftUI. - ¿Qué hace
@MainActor? Asegura que el código de una clase o función se ejecute siempre en el hilo principal (esencial para la UI). - ¿Qué es un
actor? Es un tipo de referencia, similar a una clase, que aísla su estado interno para prevenir condiciones de carrera (data races) de forma segura. - ¿Qué es el protocolo
Sendable? Indica que un tipo es seguro para ser compartido de manera concurrente entre diferentes hilos. - ¿Qué es el framework Combine? Es la API funcional reactiva de Apple para procesar valores a lo largo del tiempo.
- ¿Qué es un
AnyCancellable? Es un token que mantiene viva una suscripción de Combine y la cancela automáticamente al ser desasignado de la memoria. - ¿Qué es un
PassthroughSubject? Es un publicador de Combine que emite eventos a sus suscriptores pero no almacena ningún estado. - ¿Qué es un
CurrentValueSubject? Es un publicador que almacena su valor actual y lo emite inmediatamente a los nuevos suscriptores. - ¿Para qué sirve el método
sink? Crea un suscriptor en Combine que ejecuta un closure cada vez que recibe un nuevo valor o una finalización.
Arquitectura y Testing
- ¿Qué patrón de arquitectura encaja mejor con SwiftUI? MVVM (Model-View-ViewModel) es el más utilizado, apoyándose en
@StateObjecty@Publishedpara vincular la lógica. - ¿Qué es Clean Architecture? Es una arquitectura que divide el código en capas (Presentación, Dominio, Datos) para independizar la UI y los frameworks del negocio.
- ¿Qué es el patrón Singleton? Es un patrón que garantiza que una clase solo tenga una única instancia global accesible durante el ciclo de vida de la app.
- ¿Qué es la inyección de dependencias (DI)? Es pasar los objetos necesarios a una clase en lugar de dejar que la clase los instancie, mejorando la modularidad y el testing.
- ¿Qué es XCTest? Es el framework nativo de Xcode para escribir pruebas unitarias y de integración.
- ¿Para qué sirve
accessibilityIdentifieren UI Testing? Asigna un identificador único a los elementos visuales para que XCUITest pueda encontrarlos e interactuar con ellos fácilmente. - ¿Cómo se prueban las vistas en SwiftUI? Generalmente se prueba la lógica en el ViewModel, pero para la UI directa se usan herramientas como ViewInspector o los UI Tests nativos de Apple.
- ¿Qué diferencia hay entre Mocks y Stubs? Los Stubs proveen respuestas preparadas a las llamadas durante los test, mientras que los Mocks verifican que ciertos métodos fueron llamados.
- ¿Se usa el patrón Coordinator en SwiftUI? Sí, se suele adaptar (a menudo llamado Router o NavigationCoordinator) para extraer la lógica de navegación fuera de las vistas.
- ¿Es compatible Redux con SwiftUI? Sí, arquitecturas unidireccionales como TCA (The Composable Architecture) basadas en principios de Redux son muy populares.
Herramientas, Xcode e iOS
- ¿Qué es Xcode? Es el Entorno de Desarrollo Integrado (IDE) oficial de Apple utilizado para crear aplicaciones para sus sistemas operativos.
- ¿Qué es Swift Package Manager (SPM)? Es la herramienta oficial integrada de Apple para gestionar dependencias de código fuente.
- ¿Cuál es la diferencia entre CocoaPods y SPM? CocoaPods es un gestor de dependencias de terceros basado en Ruby; SPM es nativo, más rápido y está totalmente integrado en Xcode.
- ¿Para qué sirven las Xcode Previews? Permiten visualizar y probar la interfaz de SwiftUI en tiempo real sin necesidad de compilar y correr el simulador completo.
- ¿Qué es la herramienta Instruments? Es un conjunto de herramientas de perfilado en Xcode para analizar el rendimiento, la memoria y el uso de CPU de la app.
- ¿Qué es el
Info.plist? Es un archivo de propiedades que contiene metadatos esenciales de la aplicación, como permisos de usuario (cámara, ubicación) y configuraciones base. - ¿Cómo es el ciclo de vida de una app puramente en SwiftUI? Utiliza el atributo
@mainsobre una estructura que conforma el protocoloApp, que a su vez define una o másScene(comoWindowGroup). - ¿Cómo usar un AppDelegate en SwiftUI? Mediante el property wrapper
@UIApplicationDelegateAdaptor, el cual permite integrar el ciclo de vida clásico de UIKit. - ¿Qué es
UserDefaults? Es una base de datos ligera de clave-valor utilizada para guardar pequeñas preferencias del usuario. - ¿Cómo se integra CoreData en SwiftUI? Principalmente a través del property wrapper
@FetchRequest, que se enlaza directamente a la base de datos para actualizar la UI automáticamente.
Visited 1 times, 1 visit(s) today








