Pregunta

Me estoy poniendo los pies mojados en Objective-C y Cocoa (lo sé, probablemente tarde, pero bueno tengo que empezar en alguna parte) y me di cuenta que todos los objetos se asignan fuera del montón.

¿Hay alguna razón por la cual este es el estándar en Objective-C? He intentado buscado por todas partes (y sí, incluso en StackOverflow), pero no pude encontrar ninguna razón explícita, excepto "que es como es". Estoy especialmente interesado porque Objective-C se considera una estricta superconjunto de C con características OO.

Si me perdí un artículo sobre el InterBlag o un post en Stackoverflow por error sobre este tema, por favor iniciar apagado correcto. :)

¿Fue útil?

Solución

Creo que esto se debe a la herencia de Smalltalk.

Además, se podría decir que los objetos de la pila asignados son una particularidad de C ++. Muy pocas otras lenguas hacen eso, y luego parcialmente como una optimización de bajo nivel para el compilador. En C ++ es razonable, ya que uno de los objetivos declarados era estar exactamente como performant tan claro C.

¿Por qué cree que esto está en conflicto con el hecho de que Objective-C es un superconjunto de C? Después de todo, C plano tampoco puede asignar objetos en la pila ... ni en ninguna parte. structs, Otoh, se permite en la pila, tanto en C y Objective-C

Otros consejos

No voy a responder exactamente a su pregunta, pero ya que está entendiendo el tiempo de ejecución de Obj-C, aquí va. Puede asignar objetos de manera más eficiente el uso de NSZones. Usted no tendrá en la pila, pero al menos se puede evitar algunos problemas de fragmentación y de rendimiento: texto

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top