36 cocoa-touch objective-c nsmutablearray ios
我有一个NSMutableArray
包含大量对象的东西,我想弄清楚的是使用了多少内存array
.看了几个地方,我知道调用的大小,当我做它时,我得到32位(这是NSMutableArray
它自己的对象的大小).
示例代码:
NSMutableArray *temp = [[NSMutableArray alloc]init];
[temp addObject:objectxyz];
[temp addObject:objectabc];
[temp addObject:object123];
Run Code Online (Sandbox Code Playgroud)
现在我想知道大小:)
Sop*_*ert 100
要获取数组中的对象数,请使用
[temp count]
Run Code Online (Sandbox Code Playgroud)
如果你想要数组的总内存使用量,你将需要循环并添加每个对象使用多少内存,但我不认为通用对象会给你它的大小.一般来说,你不应该真的担心内存使用情况.
size_t size = class_getInstanceSize([temp Class]);
for (id obj in temp) {
size += class_getInstanceSize([obj Class]);
}
Run Code Online (Sandbox Code Playgroud)
请注意,class_getInstanceSize在/usr/include/objc/runtime.h中声明
另请注意,这只会计算每个类中声明的ivars的内存大小.
没有直接的方法可以做到这一点,因为所有对象都只是通过引用存储.在可可中没有"大小"的具体概念,特别是因为物体可能有多个所有者,这可能导致重复计算或其他问题.