【问题标题】:How can I get sizeof class based on NSObject [duplicate]如何基于 NSObject 获取 sizeof 类 [重复]
【发布时间】:2014-08-05 02:20:25
【问题描述】:

我是 obj-c 的新手。在这些天的实践中,我注意到每个基于 NSObject 的类都不能有一个实体,比如:c++ 中的NSObject en;,而是NSObject* en。 但是,有时我需要知道对象的大小。我不能简单地写sizeof(en),因为en 是一个指针变量。我不能简单地使用sizeof(NSObject),因为编译器告诉我Application of sizeof to interface 'XXXX' is not supported on this architecture and platform

我想知道是否有办法获取 sizeof(NSObject) 。如果没有,语法是为什么而设计的,以及任何其他获取大小的方法。

【问题讨论】:

  • 为什么需要知道 NSObject 的大小?
  • 了解您不能创建 [] 的 Objective-C 对象数组,也不能在标准框架之外分配/释放它们。并且对象的“大小”可能只是一个小标题,而对象的“胆量”在其他分配中。你真的连“大小”都定义都做不到,更不用说有效利用它了。

标签: objective-c


【解决方案1】:

来自doc

class_getInstanceSize

返回类实例的大小。

size_t class_getInstanceSize(Class cls)

参数 cls 一个类对象。 返回值 类 cls 实例的大小(以字节为单位),如果 cls 为 Nil。

但我怀疑这是你真正想要的。因为我从来没有发现它有用,也不能认为它可能有用。 (除了学习对象的内存布局和底层实现细节)

【讨论】:

    【解决方案2】:

    首先,你应该导入malloc.h

    如果您使用非 ARC:

    malloc_size(myObject);
    

    如果您使用的是 ARC:

    malloc_size((__bridge const void *) myObject));
    

    This linker 是一个和你类似的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      相关资源
      最近更新 更多