La comprensión de tiempo de ejecución dinámica de Objective-C
-
14-09-2019 - |
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. :)
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. struct
s, 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