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 • Equip 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?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Intel·ligència artificial

Agents d'IA, chatbots i assistents intel·ligents que automatitzen tasques i atenen els teus clients 24/7 per millorar l'eficiència del teu negoci.

Més info

Desenvolupament de programari

Aplicacions web, mòbils i d'escriptori, intranets, e-commerce, SaaS i plataformes de gestió dissenyades per a les necessitats concretes de la teva empresa.

Més info

Serveis cloud

Migració, infraestructura, hosting gestionat, alta disponibilitat i seguretat en Microsoft Azure i Amazon Web Services perquè el teu negoci escali sense límits.

Més info

Ciberseguretat i pentesting

Auditories de seguretat, test d'intrusió (pentesting) i protecció d'aplicacions, dades i infraestructura on-premise i cloud, amb hacking ètic i compliment normatiu.

Més info

Business Intelligence

Quadres de comandament i anàlisi de dades amb Power BI: integrem les teves fonts, dissenyem dashboards i KPIs i convertim les teves dades en decisions.

Més info

Automatització de processos

Automatitzem tasques repetitives i connectem les teves aplicacions amb n8n, Power Automate, Make i RPA, eliminant treball manual i augmentant la productivitat.

Més info

Formació per a empreses

Formem els teus equips en tecnologia amb criteri: desenvolupament web, bases de dades, Git, bones pràctiques i seguretat, automatització amb n8n, intel·ligència artificial per a empreses i creació de solucions d'IA amb Azure AI Foundry.

Més info

Auditoria de codi

Auditem el codi que creguis tu, el teu equip o una IA: et diem què està bé i què millorar, el securitzem i el deixem llest per a producció, web o app.

Més info

Generació d'imatges amb IA

Creem per tu les imatges que necessita el teu negoci amb intel·ligència artificial: producte, xarxes, publicitat, il·lustració i avatars. Tu ens dius què vols i t'ho lliurem llest per fer servir.

Més info

Generació de vídeos amb IA

Creem per tu vídeos amb intel·ligència artificial: promocionals, per a xarxes, presentadors virtuals, doblatge i animacions. Ens comptes la idea i t'ho lliurem muntat i llest per publicar.

Més info

Avatars conversacionals amb IA

Creem avatars conversacionals amb IA —humans digitals amb cara i veu— que atenen els teus clients i equips amb el coneixement de la teva empresa, a la teva web, monitors interactius, WhatsApp o Teams.

Més info

Màrqueting Online i IA

Google Ads, Meta Ads, LinkedIn Ads i posicionament en motors d'IA (GEO/AEO): captem clients i fem que la teva marca aparegui on et busquen, també a ChatGPT, Gemini i Perplexity.

Més info

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.

Live Chat