¿Qué es el método swizzling?

| Última modificación: 24 de abril de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En el mundo del desarrollo de aplicaciones móviles, especialmente en el entorno iOS, es posible que hayas escuchado el término método swizzling. Pero ¿qué es exactamente y en qué consiste este método? En este artículo te lo explicaremos de manera clara y sencilla.

¿Qué es el método swizzling?

El método swizzling es una técnica utilizada en la programación orientada a objetos que permite cambiar la implementación de un método en tiempo de ejecución. Esto significa que puedes reemplazar la implementación de un método existente con una nueva implementación personalizada, sin necesidad de modificar el código fuente original. Es una técnica poderosa que te brinda flexibilidad y control sobre el comportamiento de tus aplicaciones.

¿Cómo funciona el método swizzling?

El método swizzling se basa en la capacidad de Objective-C de asociar un selector (nombre del método) con una implementación. Cada clase de Objective-C tiene una tabla de métodos, donde se almacenan los selectores y las implementaciones correspondientes. El método swizzling aprovecha esta capacidad al intercambiar las implementaciones de dos métodos diferentes.

Veamos un ejemplo para entenderlo mejor. Supongamos que tienes una clase llamada MyClass con dos métodos: originalMethod y newMethod. Inicialmente, originalMethod tiene una implementación específica y newMethod no existe.

@implementation MyClass

- (void)originalMethod {
    // Implementación original
}

@end

🔴 ¿Quieres entrar de lleno al Desarrollo Mobile? 🔴

Descubre el Desarrollo de Apps Móviles Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp en Desarrollo de Apps Móviles por una semana

Ahora, utilizando el método swizzling, puedes intercambiar las implementaciones de originalMethod y newMethod. Esto se logra utilizando la función method_exchangeImplementations de Objective-C. Después del swizzling, originalMethod utilizará la nueva implementación definida en newMethod, y newMethod usará la implementación original de originalMethod.

@implementation MyClass

- (void)newMethod {
    // Nueva implementación
}

@end

// Swizzling
Method original = class_getInstanceMethod([MyClass class], @selector(originalMethod));
Method swizzled = class_getInstanceMethod([MyClass class], @selector(newMethod));
method_exchangeImplementations(original, swizzled);

Como resultado, cada vez que se llame a originalMethod, en realidad se ejecutará la nueva implementación en newMethod. Esto te permite modificar el comportamiento de una clase existente sin necesidad de modificar su código fuente original.

Usos comunes del método swizzling

El método swizzling se utiliza en diversos escenarios, como, por ejemplo:

  • Instrumentación de código: puedes utilizar el método swizzling para agregar registros de seguimiento, métricas o manipular el comportamiento de un método sin necesidad de modificar el código fuente existente.
  • Modificación de comportamiento: el método swizzling te permite extender o personalizar el comportamiento de clases existentes. Puedes agregar funcionalidades extra o ajustar el comportamiento de una clase para adaptarlo a tus necesidades.
  • Patching de librerías: en ocasiones, puedes encontrarte con librerías de terceros que no se comportan exactamente como deseas. Utilizando el método swizzling, puedes parchear o corregir el comportamiento no deseado de esas librerías sin necesidad de modificar su código fuente.

Consideraciones y precauciones

Aunque el método swizzling puede ser una técnica poderosa, es importante tener en cuenta algunas consideraciones y precauciones:

  • Documentación y mantenimiento: al utilizar el método swizzling, es fundamental documentar y mantener un registro claro de los cambios realizados. Esto facilitará el mantenimiento y la comprensión del código en el futuro.
  • Evitar abusos: si bien este método puede resolver problemas o permitir funcionalidades adicionales, es importante utilizarlo con moderación y evitar abusar de esta técnica. Un uso incorrecto o excesivo puede llevar a comportamientos inesperados y dificultar la depuración de errores.
  • Compatibilidad: el método swizzling se basa en características específicas de Objective-C y puede no ser compatible con otros lenguajes de programación o frameworks. Asegúrate de comprender las limitaciones y las implicaciones de compatibilidad antes de utilizar esta técnica.
método swizzling

¿Quieres seguir aprendiendo sobre desarrollo móvil?

El método swizzling es una técnica poderosa y flexible que te permite cambiar la implementación de métodos en tiempo de ejecución. Es útil para instrumentar código, modificar el comportamiento de clases existentes y parchear librerías de terceros. Sin embargo, se deben tener en cuenta consideraciones y precauciones para su uso adecuado.

Si te interesa aprender más sobre el desarrollo de aplicaciones móviles y técnicas como esta, el Desarrollo de Apps Móviles Full Stack Bootcamp de KeepCoding es tu mejor opción. Aprenderás desde los fundamentos hasta las tecnologías más avanzadas y tendrás la oportunidad de trabajar en proyectos prácticos para obtener experiencia real. ¡Pide información y comienza tu emocionante viaje hacia el éxito en el mundo de la tecnología!

Jose Luis Bustos
Jose Luis Bustos

Lead Software Architect & Coordinador del Bootcamp en Desarrollo de Apps Móviles iOS & Android.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Desarrollo de apps móviles ios & Android

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado