Question

Je reçois mes pieds mouillés en Objective-C et Cocoa (je sais, probablement à la fin, mais bon je dois commencer quelque part) et je remarqué que tous les objets sont répartis sur le tas.

Y at-il des raisons pour lesquelles cela est la norme en Objective-C? J'ai essayé regardé partout (et oui, même sur StackOverflow), mais je ne trouve aucune raison explicite, à l'exception « qui est comme ça ». Je suis particulièrement vif parce est considéré comme Objective-C une stricte super-ensemble de C avec des fonctionnalités OO.

Si je manqué un article sur le InterBlag ou un post sur Stackoverflow par erreur sur ce sujet, s'il vous plaît lancer un arrêt progressif. :)

Était-ce utile?

La solution

Je pense que ce doit au patrimoine Smalltalk.

En outre, on pourrait dire que les objets de pile alloués sont une particularité de C ++. Très peu d'autres langues font, et la plupart du temps comme l'optimisation de bas niveau pour le compilateur. En C ++, il est raisonnable, puisque l'un des objectifs fixés devait être exactement C en plaine performant.

Pourquoi pensez-vous que c'est en conflit avec le fait que l'objectif-C est un super-ensemble de C? Après tout, plaine C ne peut pas allouer soit des objets sur la pile ... ni nulle part. structs, OTOH, sont autorisés sur la pile, à la fois sur C et Objective-C

Autres conseils

Je ne réponds pas exactement à votre question, mais puisque vous comprenez l'exécution de Obj-C, ici il va. Vous pouvez allouer des objets plus efficacement en utilisant NSZones. Vous ne les aurez pas sur la pile, mais au moins vous pouvez éviter certains problèmes de fragmentation et de performance: texte de lien noreferrer"> de

scroll top