Objective c 如何基于NSObject获取类的大小
我是obj-c的新手。在这些天的实践中,我注意到基于NSObject的每个类都不能有这样的实体:Objective c 如何基于NSObject获取类的大小,objective-c,Objective C,我是obj-c的新手。在这些天的实践中,我注意到基于NSObject的每个类都不能有这样的实体:nsobjecten但是代码> NSObjuleEn/COD>。 但是,有时我需要知道对象的大小。我不能简单地编写sizeof(en),因为en是一个指针变量。我也不能简单地使用sizeof(NSObject),因为编译器告诉我在这个架构和平台上不支持将sizeof应用于接口“XXXX” 我想知道是否有一种方法可以获得sizeof(NSObject)。如果没有,语法的设计目的是什么&任何其他获得大小的
nsobjecten但是代码> NSObjuleEn/COD>。
但是,有时我需要知道对象的大小。我不能简单地编写sizeof(en)
,因为en
是一个指针变量。我也不能简单地使用sizeof(NSObject)
,因为编译器告诉我在这个架构和平台上不支持将sizeof应用于接口“XXXX”
我想知道是否有一种方法可以获得sizeof(NSObject)。如果没有,语法的设计目的是什么&任何其他获得大小的方法。首先,您应该导入malloc.h
如果使用非圆弧:
malloc_size(myObject);
如果您使用的是ARC:
malloc_size((__bridge const void *) myObject));
这是一个与你的问题类似的问题。来自
class_getInstanceSize
返回类实例的大小
大小\u t类\u获取实例大小(类cls)
参数cls是一个类对象。
返回值cls类实例的大小(以字节为单位),如果为0,则返回值
cls为零
但我怀疑这是你真正想要的。因为我从来没有发现它有用,也不认为它可能有用。(除了学习对象的内存布局和低级实现细节)为什么需要知道NSObject的大小?请理解,您不能创建Objective-C对象的[]
数组,也不能在标准框架之外分配/释放它们。而对象的“大小”可能只是一个小标题,在其他分配中包含对象的“胆量”。你甚至不能定义“大小”,更不用说有效地利用它了。