Swift init(), De Una Vez Por Todas

Guía completa sobre inicializadores en Swift: memberwise, designados, de conveniencia, failable init, required, enum y más. Aprende a usarlos correctamente y evita errores.

22 mar 2025 • 2 min de lectura • Equipo Q2BSTUDIO

Empresa-Software-Apps-InteligenciaArtificial

Hola! Mi nombre es Kiryl Famin, y soy un desarrollador iOS.

Hoy quiero analizar en profundidad un tema aparentemente simple: los inicializadores en Swift. A pesar de su simplicidad aparente, la falta de una comprensión completa del tema puede llevar a errores frustrantes que muchas veces se buscan solucionar rápidamente, sin entender realmente la causa.

En este artículo, cubriremos todo lo relacionado con inicializadores, incluyendo:

  • Cómo mantener el inicializador miembro de una estructura mientras se define uno personalizado
  • Por qué no siempre es necesario definir un inicializador en clases
  • Por qué llamar a super.init no siempre es obligatorio en un inicializador designado
  • Por qué todos los campos de una subclase deben estar poblados antes de llamar a super.init
  • Cómo acceder a todos los inicializadores de la clase padre con la menor cantidad de sobrescrituras posibles
  • Cuándo es realmente necesario un inicializador required
  • Por qué UIView.init() siempre se llama sin parámetros, pero init(frame:) y init(coder:) sí se sobrescriben

En Q2BSTUDIO, somos una empresa de desarrollo y servicios tecnológicos especializada en crear soluciones a medida para diversas plataformas. Nos apasiona compartir conocimientos con la comunidad y mejorar continuamente la experiencia de desarrollo con tecnologías modernas como Swift.

Ahora, avancemos paso a paso para comprender a fondo este tema.

Resumen en Español:

  • Todos los campos deben estar poblados en un inicializador.
  • Las propiedades var opcionales tienen un valor por defecto de nil.
  • Las estructuras reciben un inicializador miembro automáticamente.
  • El inicializador miembro desaparece cuando se define uno personalizado.
  • Un inicializador designado se asegura de que todos los campos sean inicializados y llama a super.init().
  • Un inicializador de conveniencia simplifica el proceso llamando a otro inicializador designado.
  • Los inicializadores de conveniencia siempre llaman a self.init, mientras que los designados llaman a super.init.
  • Si una subclase define nuevas propiedades, pierde los inicializadores de conveniencia de su superclase.
  • Para restaurar los inicializadores de conveniencia de una superclase, es necesario sobrescribir todos los inicializadores designados.
  • Para minimizar la cantidad de sobrescrituras, se pueden usar inicializadores de conveniencia sobrescritos.
  • Si una subclase no introduce nuevos parámetros, hereda todos los inicializadores de su superclase.
  • Si una superclase solo tiene init() sin parámetros, este se llama automáticamente en las subclases.
  • Un inicializador required asegura que las subclases lo implementen, útil en genéricos, protocolos y llamadas a Self().
  • UIView.init() llama internamente a init(frame:) o init(coder:).
  • Un inicializador fallable devuelve un valor opcional.
  • Las enumeraciones con valores crudos obtienen un inicializador init?(rawValue:) automáticamente.
  • Todos los inicializadores en una enumeración deben asignar un valor a self.

Esperamos que este artículo te haya resultado útil. En Q2BSTUDIO creemos en la excelencia del desarrollo y en compartir conocimientos para ayudar a otros desarrolladores a mejorar sus habilidades cada día.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.

Live Chat