实例变量声明的顺序在Objective-C中是否重要?

时间:2014-08-28 19:20:52

标签: objective-c memory-alignment ivar

我正在互联网上搜索优化Objective-C代码的提示,并且遇到了this链接。在文章中我看到了下面的注释,我无法理解。

enter image description here

2 个答案:

答案 0 :(得分:2)

这篇文章已经过时了。曾经有一段时间,ivars存储在Objective-C实例中,就像存储结构的成员一样,因此内存对齐可能(略微)影响访问时间。

然而,现在,are indirectly accessed (at least in Apple's runtime);实例现在保存了ivar的偏移量,并使用它来访问变量。由于所有这些偏移都属于同一类型,并且您无法控制其他存储,因此可以避免此对齐问题。

此外,通过引入声明的属性,明确的ivar声明已经不再常规使用。

答案 1 :(得分:2)

ivars的布局由Objective-C编译器决定,并且语言中没有提供控件来实现此目的。虽然您阅读的文章在特定编译器的某个时间点可能是正确的,但它报告了您不能依赖的特定于实现的详细信息。

相信编译器做得好;或者如果布局对您很重要,请使用C或其他语言来控制布局。