我的脚在Objective-C和Cocoa中弄湿了(我知道,可能很晚,但是我必须从某个地方开始),我注意到所有物体都从堆中分配了。

有什么理由为什么这是Objective-C的标准?我尝试过任何地方(是的,甚至在Stackoverflow上),但是我找不到任何明确的原因,除了“那是这样”。我特别热衷,因为Objective-C被认为是具有OO功能的严格超级集合。

如果我错过了有关 Interblag 或在此主题上错误地在Stackoverflow上发表帖子,请启动优雅的关闭。 :)

有帮助吗?

解决方案

我认为这归功于Smalltalk遗产。

另外,您可以说堆栈分配的对象是C ++的特殊性。很少有其他语言这样做,然后主要是对编译器的低级优化。在C ++中,这是合理的,因为既定目标之一就是 确切地 像普通C一样表现。

您为什么觉得这与Objective-C是C的超级集合这一事实相抵触?毕竟,普通c不能在堆栈上分配对象...也不能在任何地方分配。 structS,OTOH允许在C和Objective-C上进行堆栈

其他提示

我并不是完全回答您的问题,但是由于您了解OBJ-C的运行时,因此它可以了。您可以使用NSZONES更有效地分配对象。您不会将它们放在堆栈上,但是至少您可以避免一些分裂和性能问题:链接文字

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top