ivars的布局由Objective-C编译器确定,语言本身没有提供影响它的控制。虽然你读过的文章可能在某个特定编译器的某个时间点上是正确的,但它报告的是实现特定的细节,你不能依赖它。 相信编译器会做好工作;或者如果布局对你很重要,请使用C或其他提供布局控制的语言。
这篇文章已经过时了。曾经,ivars(实例变量)被存储在Objective-C实例中,就像结构体的成员一样存储,因此内存对齐可能会(稍微)影响访问时间。然而,现在,ivars 间接访问(至少在苹果的运行时中); 实例现在保存ivar的偏移量,并使用它来访问变量。由于所有这些偏移量都是相同类型的,并且您无法控制其他存储,因此这个对齐问题已经消除了。此外,随着声明属性的引入,显式ivars声明已经不再常见。