Domanda

Sono sempre i piedi bagnati in Objective-C e Cocoa (lo so, probabilmente in ritardo, ma hey devo iniziare da qualche parte) e ho notato che tutti gli oggetti sono allocati fuori dal mucchio.

C'è un motivo per cui questo è lo standard in Objective-C? Ho provato guardato dappertutto (e sì, anche su StackOverflow), ma non sono riuscito a trovare alcuna ragione esplicita, tranne "che è come è". Sono particolarmente entusiasta perché Objective-C è considerato un severo super-set di C con le caratteristiche OO.

Se ho perso un articolo sulla InterBlag o un post su StackOverflow per sbaglio su questo argomento, si prega di avviare arresto regolare. :)

È stato utile?

Soluzione

Credo che questo deve al patrimonio Smalltalk.

Inoltre, si potrebbe dire che gli oggetti dello stack-assegnati sono una peculiarità di C ++. Pochissimi altri linguaggi che fanno, e quindi per lo più come un'ottimizzazione di basso livello per il compilatore. In C ++ è ragionevole, dal momento che uno degli obiettivi dichiarati doveva essere esattamente come performante come semplice C.

Perché ti senti questo è in contrasto con il fatto che Objective-C è un super-set di C? Dopo tutto, pianura C non può né allocare oggetti sullo stack ... né da nessuna parte. structs, OTOH, sono ammessi sulla pila, sia in C e Objective-C

Altri suggerimenti

Non sono esattamente rispondere alla tua domanda, ma dal momento che si sta capendo runtime di Obj-C, qui va. È possibile allocare oggetti più efficiente utilizzando NSZones. Non avrete li in pila, ma almeno si può evitare alcuni problemi di frammentazione e di prestazioni: testo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top