Diferencias entre unowned y weak

Cuando escribimos código en Swift debemos tener muy en cuenta como manejamos las referencias a nuestras clases, para que el Automatic Reference Counting (ARC) puede liberar la memoria cuando ya no las necesitemos.

Para indicar que queremos tratar una referencia de manera explícita, podemos usar unowned y weak.

El tiempo de vida del objeto es la característica principal para saber cuando usaremos weak o unowned:

  • Si no puedes determinar cual de los objetos implicados en la relación tendrá un tiempo de vida mayor, deberías usar weak.
  • Si podemos garantizar que ambos objetos tendrán el mismo tiempo de vida, puedes usar unwoned.

Ventajas de usar weak

  • Como es opcional, podrás tener soporte en tiempo de compilación. Es decir, el compilador te informará que debes tratar el objeto en cuestión como opcional.

  • Evitarás crashes relacionados a acceder un objeto que no está en memoria.

Desventajas de usar weak

  • Tener que introducir validaciones relacionadas a trabajar con opcionales.

Ventajas de usar unowned

  • No tienes que usar opcionales.
  • Acceder a una propiedad o llamar un método en una referencia unowned, es un poco más rápido. Pero la diferencia de rendimiento es muy mínima.
  • Se comunica de una manera las relaciones entre objetos, por ejemplo, las de padre-hijo. Si usamos unowned cuando leemos el código estamos seguros que un objeto no podrá existir sin otro.

Desventajas de usar unowned

  • Acceder una referencia unowned inválida causará un crash.
  • Si el código cambia y por alguna razón la relación entre los objetos ya no es directa, tendrás que cambiar unowned por weak.

Comparte este artículo

Subscríbete a nuestro Newsletter

Mantente al día en el mundo de las aplicaciones móviles con nuestro blog especializado.

Artículos semanales

Todas las semanas artículos nuevos sobre el mundo de las aplicaciones móviles.

No spam

No te enviaremos spam, solo contenido de calidad. Puedes darte de baja cuando quieras.

Contenido de calidad

Nada de contenido generado de manera automática usando ChatGPT.

Recomendaciones

Tips indispensables sobre mejores prácticas y metodologías.

© 2024 AsyncLearn