en un sentido técnico, sí, es más rápido, precisamente por esa razón.
En un sentido práctico, no, no es más rápido. Por un lado, la diferencia de velocidad es pequeña. Estamos hablando de milisegundos guardados durante la vida de todo el proceso.
El ahorro puede ser mayor en el iPhone, pero aún así es la ganancia de velocidad más pequeña que puede obtener. Es mucho mejor dedicar tiempo a crear perfiles de su aplicación en Instruments e ir a donde se lo indique y resolver los puntos conflictivos en su propio código.
Y ahí es donde Foundation se vuelve más rápida: Su tiempo.
El código que usa la función de liberación automática de Foundation siempre que sea posible le ahorra mucho tiempo y dolores de cabeza al evitar fugas de memoria fácilmente evitables (es decir, olvidarse de escribir o no alcanzar los mensajes release
). CF no tiene liberación automática, por lo que debe recordar explícitamente CFRelease
todo lo que cree o copie con él, y cuando olvide o no llegue a ese código (y me refiero a cuando -hablo por experiencia), gastará mucho más tiempo buscando la fuga de memoria. El analizador estático ayuda, pero nunca podrá capturar todo.
(Es técnicamente posible objetos autorelease CF, pero el código para hacerlo es terriblemente fea y que sólo está diluyendo su aumento de velocidad ya-minúsculo.)
Por lo tanto, se adhieren a la Fundación tanto como posible. No te excedas con la liberación automática; incluso en Cocoa puro, todavía hay momentos en los que está garantizado la liberación explícita de objetos (la mayoría de los bucles apretados), y esto se duplica para Cocoa Touch (ya que iOS matará su aplicación si asigna demasiada memoria, por lo que querrá liberar grandes objetos como imágenes lo más pronto posible). Pero, por lo general, la liberación automática le ahorra mucho más tiempo de lo que CF salvará a sus usuarios.
El motivo no relacionado con el tiempo es que el código Objective-C, con nombres de argumento (del selector de mensajes) mezclado con valores, es mucho más fácil de leer que el código basado en la función C. Esto puede no hacer que su trabajo vaya más rápido, pero ciertamente lo hace más divertido.
Cuando dice que la velocidad es esencial, ¿se refiere a la velocidad de desarrollo o la velocidad de la aplicación desarrollada? – JeremyP
Velocidad en la aplicación en sí. – grmartin