AD

¿Ya dominas lo básico? Un curso estructurado de Objective-C es la vía rápida para dar el salto.

Ver cursos de Objective-C en Udemy

Enlace de afiliado. No te cuesta nada extra.

🍎Lecciones de Objective-C
Lección 38 / 68

Acelerar cálculos con memoización

En esta lección guardarás resultados ya calculados para no repetir el trabajo.

Se lleva un NSMutableDictionary donde la clave es la entrada y el valor el resultado. Antes de calcular se consulta; si está, se devuelve directamente.

El código de ejemplo llama varias veces y los mensajes dejan ver cuándo calcula y cuándo recuerda.

Fíjate en que la clave se envuelve con @(n): las claves de un diccionario deben ser objetos, y además tienen que cumplir NSCopying, porque el diccionario guarda una copia de la clave y no el objeto original. Con NSNumber y NSString eso ya se cumple.

La comprobación if (cache[key]) tiene un fallo sutil que conviene ver: si el valor guardado fuera @0, el objeto existe y la condición es cierta — eso funciona. Pero si el resultado legítimo pudiera ser nil, no habría forma de distinguirlo de «no calculado». Para esos casos se guarda NSNull.

En el mundo de Apple, para cachés con límite automático existe NSCache, que además libera memoria cuando el sistema lo pide — algo importante en un móvil.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar Objective-C directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)