我是obj-c的新手。在这一天的实践中,我注意到每个基于NSObject的类都不能拥有像c ++中的NSObject en;
这样的实体,而是NSObject* en
。
但是,有时我需要知道对象的大小。我不能简单地写sizeof(en)
因为en
是一个指针var。我不能简单地使用sizeof(NSObject)
来编译器告诉我Application of sizeof to interface 'XXXX' is not supported on this architecture and platform
。
我想知道是否有办法获得sizeof(NSObject)。如果没有,那么为&设计的语法是什么?任何其他方法来获得规模。
答案 0 :(得分:1)
来自doc
class_getInstanceSize
返回类实例的大小。
size_t class_getInstanceSize(Class cls)
参数cls一个类对象。 返回值类cls实例的大小(以字节为单位),如果是,则为0 cls是Nil。
但我怀疑这是你真正想要的东西。因为我从未发现它有用而且不能认为它可能有用。 (学习对象的内存布局和低级实现细节除外)
答案 1 :(得分:0)
首先,您应该导入malloc.h
如果您使用非ARC:
malloc_size(myObject);
如果您使用ARC:
malloc_size((__bridge const void *) myObject));
This linker是一个类似于你的问题。