Ale*_*yne 79
int size = [array count];
NSLog(@"there are %d objects in the array", size);
Run Code Online (Sandbox Code Playgroud)
Dav*_*ong 10
另一个答案的答案:
你不能以兆字节为单位获得数组的大小,至少不能没有做一些棘手的,不支持的*C voodoo.NSArray是一个类集群,这意味着我们不知道它是如何在内部实现的.实际上,所使用的实现可以根据阵列中有多少项而改变.此外,数组的大小与数组引用的对象的大小不相交,因为这些对象位于堆上的其他位置.即使是保存对象指针的结构在技术上也不是数组的"部分",因为它不一定calloc紧挨NSArray着堆上的实际值.
如果你想要数组结构本身的大小,那么显然只有4个字节:
NSLog(@"Size: %d", sizeof(NSArray));
Run Code Online (Sandbox Code Playgroud)
打印:
2010-03-24 20:08:33.334 EmptyFoundation[90062:a0f] Size: 4
Run Code Online (Sandbox Code Playgroud)
(当然,这不是一个合适的表示,因为NSArray它可能只是另一种对象的抽象接口,通常类似于NSCFArray.如果你查看NSArray.h,你会看到一个NSArray没有实例变量.对于应该有的东西很奇怪拿着其他物品,嗯?)
* "不支持"我的意思是"不推荐","深入研究类集群的内在神秘主义",以及"无证件和私有API,如果它甚至存在"
可以通过向NSArray实例发送'count'来确定大小,并且可以通过NSLog()打印到控制台,例如:
NSArray * array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];
NSLog(@"array size is %d", [array count]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61809 次 |
| 最近记录: |