如何基于NSObject获取sizeof类

时间:2014-08-05 02:20:25

标签: objective-c

我是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)。如果没有,那么为&设计的语法是什么?任何其他方法来获得规模。

2 个答案:

答案 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是一个类似于你的问题。