【问题标题】:get the size of class object at run time in objective c在目标c中运行时获取类对象的大小
【发布时间】:2016-11-02 12:30:46
【问题描述】:

我需要获取类对象的大小。例如

Class ABC
{
   NSData *data;
   UIimage *img;
   NSString *str;
}

在运行时,我将值分配给 .data 和 .img 属性,例如

ABC *objABC = [ABC allc] init];
objABC.data = Mydata;
objABC.img = Myimage;
objABC.str = @"testString";

现在,我需要知道“objABC”的大小(以字节、KB 或 MB 为单位)。

假设我创建了 100 个具有不同大小的 .image 和 .data 属性的 ABC 类对象。我尝试过使用 malloc_size(),但无论 .data 或 .img 的大小如何,它都会为我的所有对象返回相同的大小

我想知道 objABC 的确切大小(以 KB 为单位)。请帮忙。

【问题讨论】:

  • 您需要在 ABC 中编写一个返回其内容大小的方法,然后在该方法中编写合适的逻辑。
  • 在该对象中创建一个返回双精度值的方法。在其中将 self 转换为 nsdata 并从 nsdata 获取长度,返回长度。

标签: ios objective-c malloc


【解决方案1】:

您可以使用以下内容:

#include <objc/runtime.h>

size_t objsize = class_getInstanceSize([objABC class]);

【讨论】:

  • 这只会获取所有实例变量的大小,而不是那些实例变量指向的对象的大小。
猜你喜欢
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 2016-10-05
  • 1970-01-01
  • 2015-10-18
  • 1970-01-01
相关资源
最近更新 更多