Si la velocidad pura es el único problema (es decir, está creando un motor de representación donde cada ciclo de CPU pequeño cuenta), la forma más rápida de iterar a través de cualquiera de los objetos NSCollection (desde iOS 5.0 ~ 6.0) es varios métodos "enumerateObjectsUsingBlock". No tengo idea de por qué esto es así, pero lo probé y este parece ser el caso ...
Escribí pequeñas pruebas creando colecciones de cientos de miles de objetos que tienen cada uno un método que suma una simple matriz de enteros . Cada una de esas colecciones se vio forzada a realizar varios tipos de iteraciones (para bucle, enumeración rápida, makeObjectsPerformSelector y enumerateObjectsUsingBlock) millones de veces, y en casi todos los casos los métodos "enumerateObjectsUsingBlock" ganaron con facilidad en el transcurso de las pruebas.
El único momento en que esto no era cierto fue cuando la memoria comenzó a llenarse (cuando empecé a correr con millones de objetos), después de lo cual comenzó a perder a "makeObjectsPerformSelector".
Disculpa, no tomé una instantánea del código, pero es una prueba muy simple de ejecutar, recomiendo probarlo y compruébalo por ti mismo. :)
Gracias por el enlace, ¡no sabía este documento! Como dices, la sección "Desenrollar bucles" indica claramente que los desarrolladores de Cocoa han realizado optimizaciones internas con -makeObjectsPerformSelector: – mouviciel
Me complace. Hay algunas cosas interesantes allí. –