Clang / LLVM是否优化了自动合成属性的内存使用以避免对齐填充?据我所知,Objective-C对象基本上是内存中的结构,所以像
这样的对象@interface MyObj {
BOOL b;
id obj;
}
将在b
和obj
之间填充,以便在指针大小的边界上对齐obj
,而像
@interface MyObj2 {
id obj;
BOOL b;
}
不需要在obj
和b
之间填充,因为BOOL自然是字节对齐的。
对于自动合成属性,Xcode如何在内存中布置支持ivars?如果我手动命令ivars来改善填充,我的对象会使用更少的内存吗?
答案 0 :(得分:2)
虽然我不知道,但我很确定设计这个的工程师会说这是一个你不应该关心的实现细节。在所有可能影响您的表现的事情中,这不可能是一个。
如果你真的想知道,仔细阅读clang或objc运行时代码可以告诉你。