NSArray的大小
你如何获得NSArray
的大小,并使用NSLog
在控制台中打印?
int size = [array count]; NSLog(@"there are %d objects in the array", size);
另一个答案的答案是:
你不能以兆字节来获得数组的大小,至less不是没有做一些棘手的,不受支持的* C巫术。 NSArray
是一个类集群,这意味着我们不知道它是如何在内部实现的。 事实上,所使用的实现可以根据数组中有多less项目而改变 。 此外,数组的大小与数组引用的对象的大小不相交,因为这些对象位于堆的其他地方。 即使是持有对象指针的结构在技术上也不是数组的一部分,因为它不一定是紧靠堆上的实际NSArray
calloc
。
如果你想要数组结构本身的大小,那么显然只有4个字节:
NSLog(@"Size: %d", sizeof(NSArray));
打印:
2010-03-24 20:08:33.334 EmptyFoundation[90062:a0f] Size: 4
(当然,这不是一个体面的表示,因为NSArray
可能只是另一种types的对象的抽象接口,通常类似于NSCFArray
,如果你看看NSArray.h
,你会发现NSArray
没有实例variables。对于那些应该包含其他东西的东西很奇怪?)
*
“不被支持”的意思是“不推荐”,“深入到阶级集群的内在神秘主义”,“没有证件和私人的API,如果它存在的话”
大小可以通过向NSArray实例发送'count'来确定,并且可以通过NSLog()完成到控制台的打印,例如:
NSArray * array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil]; NSLog(@"array size is %d", [array count]);
看看这个post你的数组大小的问题
目标C中数组的长度
使用NSLog写入控制台…
NSLog(@"The array size is %@", arraySize);
在斯威夫特4
让a = [“a”,“b”]
a.count // 2