Pergunta

Estou molhando meus pés no Objective-C e Cocoa (eu sei, provavelmente tarde, mas ei, tenho que começar em algum lugar) e notei que todos os objetos são alocados da pilha.

Existe alguma razão pela qual esse é o padrão no Objective-C? Eu tentei olhei em todos os lugares (e sim, mesmo no Stackoverflow), mas não consegui encontrar nenhum motivo explícito, exceto "é assim que é". Estou especialmente interessado porque o Objective-C é considerado um super-definido rigoroso de C com recursos OO.

Se eu perdi um artigo sobre o Interblag Ou um post no StackOverflow por engano neste tópico, inicie o desligamento gracioso. :)

Foi útil?

Solução

Eu acho que isso deve à herança de SmallTalk.

Além disso, você poderia dizer que objetos alocados em pilha são uma peculiaridade do C ++. Muito poucos outros idiomas fazem isso, e depois principalmente como uma otimização de baixo nível para o compilador. Em C ++ é razoável, já que um dos objetivos declarados era ser exatamente Tão Performant quanto Plain C.

Por que você acha que isso está em conflito com o fato de que o Objective-C é um super-set de C? Afinal, a Plain C não pode alocar objetos na pilha ... nem em qualquer lugar. structS, OTOH, são permitidos na pilha, tanto em C e Objective-C

Outras dicas

Não estou respondendo exatamente sua pergunta, mas como você está entendendo o tempo de execução do OBJ-C, aqui vai. Você pode alocar objetos com mais eficiência usando nszones. Você não os terá na pilha, mas pelo menos pode evitar alguns problemas de fragmentação e desempenho:Texto do link

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top