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