2010-03-24 57 views
34

如何获得NSArray的大小并使用NSLog在控制台中进行打印?NSArray的大小

+9

http://developer.apple.com/mac/library/文档/可可/参考/基金/班/ NSArray_Class/NSArray.html#// apple_ref/OCC/instm/NSAR ray/count – Nippysaurus 2010-03-24 23:06:27

回答

67
int size = [array count]; 
NSLog(@"there are %d objects in the array", size); 
+5

技术上它应该是'NSUInteger size = ...',但无论如何+1。 :) – 2010-03-24 23:57:40

+1

无论如何,您必须将其转换为printf支持的类型才能打印它,因为printf没有NS [U]整数的格式说明符。 – Chuck 2010-03-25 00:11:23

+1

@Chuck文档分别表示为'NSInteger'和'NSUInteger'分别使用'%ld'和'%lu'。 http://developer.apple.com/mac/library/documentation/cocoa/conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW5 – 2010-03-25 01:48:27

5

大小可以通过发送确定'count'到NSArray实例,并且可以通过NSLog()打印到控制台,例如:

NSArray * array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil]; 
NSLog(@"array size is %d", [array count]); 
7

的回答另一个答案:

你不能以兆字节数组的大小,至少在没有做一些棘手的,不支持* C巫术。 NSArray是一个类集群,这意味着我们不知道它是如何在内部实现的。的确,所使用的实现可以是change depending on how many items are in the array。此外,数组的大小与数组引用的对象的大小不相交,因为这些对象位于堆中的其他位置。即使是保存对象指针的结构在技术上也不是阵列的“部分”,因为它不一定是calloc'd,它紧靠堆上的实际NSArray

如果你想在数组的大小结构本身,那么这显然只有4个字节:

NSLog(@"Size: %d", sizeof(NSArray)); 

打印:

2010-03-24 20:08:33.334 EmptyFoundation[90062:a0f] Size: 4 

(当然,这不是一个体面的表现,因为NSArray是可能只是另一种对象的抽象接口,通常类似于NSCFArray。如果您查看NSArray.h,您会看到NSArray没有实例变量。对于som来说很奇怪这个东西应该是用来存放其他东西的,呃?)

*作者:“不支持”,我的意思是“不推荐”,“钻研类集群的内在神秘主义”,以及“无证和私有API,如果它甚至存在”

0

在夫特4

让= [ “一”, “b”]

a.count // 2