C-Struct vs object

Actualmente estoy trabajando en el simulador de juego de la vida de Conway para iPhone y tuve algunas preguntas sobre gestión de memory. Tenga en count que estoy usando ARC.
Para mi aplicación, voy a necesitar una gran cantidad de structs estilo C o objects Objective-C para representar celdas. Puede haber un par de miles de estos, así que obviamente, la gestión de la memory vino a la mente.
Structs Mi argumento para estructuras es que las celdas no necesitan properties de OO típicas. Lo único que estarán sosteniendo son dos valores de BOOL , por lo que no habrá una gran cantidad de memory masticada por estas células. Además, necesito utilizar una matriz bidimensional. Con estructuras, puedo usar los arrays 2d estilo C. Hasta donde yo sé, no hay reemploop para esto en Objective-C. Siento que es excesivo crear un object para solo dos valores booleans.
Objectivos-C Mi argumento (y el de la mayoría de los demás) es que la gestión de la memory de objects Objective-C es muy fácil y eficiente con ARC. Además, he visto arguments de que una struct no es una networkingucción de memory tan grande para un object.

Entonces mi pregunta ¿Debo ir con la vieja escuela, esbelta y compatible con structs sets bidimensionales? O debería seguir los objects típicos de Objective-C y arriesgar la memory extra utilizada.

Consejos posteriores: si recomienda objects Objective-C, proporcione un método alternativo de almacenamiento que represente una matriz bidimensional. Esto es fundamental y es uno de los mayores inconvenientes de ir con objects Objective-C.
Gracias.

"La optimization prematura es la raíz de todo mal" … Si está tratando de build un server Game of Life con 100.000 usuarios jugando al mismo time, la huella de la memory podría ser importante. Para una implementación de una sola persona en cualquier dispositivo moderno, incluso uno mobile, el tamaño de la memory es bastante académico. Por lo tanto, haz lo que sea que el juego esté funcionando más rápido o (mejor) hace que el código sea más legible y mantenible. Los ciclos humanos cuestan más que los ciclos informáticos. Suponga que necesita un tercer boolean para cada celda del juego … ¿no sería un object que podría extender ahorrar un montón de time en lugar de índices de matriz codificados? (Una estructura es mucho mejor que una serie de primitivas por esta razón …) Ciertamente he usado representaciones de datos más densas cuando necesito hacerlo, pero la sobrecarga en el time del progtwigdor tiene que valer la pena. Solo mi $ .02 …

Si son solo 2 valores BOOL que va a almacenar para cada celda, entonces puede usar una matriz de integers para hacer el trabajo. Por ejemplo:

Supongamos que los dos valores bool son boolX y boolY, podríamos combinarlos en un int como:

 int combinedBool = boolY + (10*boolX); 

Entonces puede recuperar los dos valores bool como:

 BOOL boolX, boolY; boolX = combinedBool/10; boolY = combinedBool%10; 

Y luego puede almacenar todo el tablero en la forma de una matriz de una sola dimensión de integers con el índice de cada celda representada por ((yIndex*width)+xIndex) donde el width es el número de celdas de izquierda a derecha en su tablero y , xIndex e yIndex representan las coorderadas X e Y de la celda en su tablero.

Espero que esto ayude con la gestión de la memory y la organización celular.

Puedes build uno y probar su tamaño con malloc_size(myObject) . Miles de pares de bools serán lo suficientemente pequeños. De hecho, podrá hacer que los objects sean más grandes y disfrutar de los beneficios del layout de OO. Por ejemplo, ¿qué pasa si las celdas también mantienen pointers a sus celdas vecinas? Las celdas podrían calcular su propio estado t + 1 con acceso en caching a sus vecinos.