« Posters de patrones de diseño | Inicio | Cuidado con los cantos de sirena »

Recolector de basura en Objective-C

Ya hace tiempo que se especulaba con la posibilidad de la inclusión de un recolector de basura para las aplicaciones Cocoa en Mac OS X 10.5, pero estos últimos días ha vuelto a hablarse bastante sobre el asunto.

Una de las ventajas, y a la vez, uno de los inconvenientes de Objective-C es que el manejo de memoria debe hacerse "a mano". No hay recolector de basura, por lo que es responsabilidad del programador liberar los recursos que haya inicializado, cunado ya no sean necesarios.

Esa forma de manejar la memoria supone una ventaja inmediata: no hay cuellos de botella en la performance de la aplicación por culpa del recolector de basura. Además, se mejora el control del programador sobre la aplicación y se minimiza el uso de recursos.

Sin embargo, el tener que manejar la memoria a mano trae consigo dos complicaciones. Por un lado, el tener que eliminar de memoria las referencias a mano hace que sea más sencillo (al menos en mi caso, extremadamente sencillo) el dejar leaks de memoria, puntos en los que el uso de memoria de la aplicación va creciendo ya que no se eliminan, por error del programador, estructuras de datos, por ejemplo.

Pero además, para el que llegue a Cocoa desde Java o desde cualquier otro de los lenguajes que sí gestionan memoria, el tener que preocuparse de retener y liberar objetos es probablemente lo que más duro se le va a hacer en su aprendizaje del lenguaje.

Resumiendo: que el manejo automático de memoria puede ser una ventaja para el programador, sobre todo para el que no llegue a Cocoa desde el mundo de C++. Veremos si al final termina por implementarse o no