这可能是一个基本问题,但我很好奇知道答案。在我们的iOS Obj C程序中创建每个变量(如int、NSString、NSDictionary、NSData等)时将占用多少内存。希望它与C程序类似,基于数据类型的大小(或者)不同吗?
谢谢!
这可能是一个基本问题,但我很好奇知道答案。在我们的iOS Obj C程序中创建每个变量(如int、NSString、NSDictionary、NSData等)时将占用多少内存。希望它与C程序类似,基于数据类型的大小(或者)不同吗?
谢谢!
您应该将Objective-C对象的大小视为实现细节,不能依赖它们。它们可能在不同环境中保持一致,但不能保证。此外,由于它们可能以各种巧妙的方式实现,因此没有一种一致且完整的方法来测量它们的大小。
如果您需要精确管理内存分配,请使用C类型,它们本身就是完全有效的Objective-C。
#import "objc/runtime.h"
int size = class_getInstanceSize([NSDictionary class]);
这取决于您想要放入这些类(NSString,NSDictionary,NSData)的内容。您可以说NSMutableString等会更改它们的大小,但它们只是重新分配自己。
NSDictionary
是一个抽象类,因此您永远不会拥有该实际类的实例。其次,NSDictionary
- 就像几乎所有其他类一样 - 具有与实例分配分开的后备存储器。 - bbum