【发布时间】:2010-03-24 22:57:27
【问题描述】:
如何获取NSArray 的大小并使用NSLog 在控制台中打印?
【问题讨论】:
标签: ios objective-c arrays
如何获取NSArray 的大小并使用NSLog 在控制台中打印?
【问题讨论】:
标签: ios objective-c arrays
int size = [array count];
NSLog(@"there are %d objects in the array", size);
【讨论】:
NSUInteger size = ...,但无论如何+1。 :)
%ld 和%lu 来表示NSInteger 和NSUInteger。 developer.apple.com/mac/library/documentation/cocoa/conceptual/…
long 和 unsigned long 的演员,但这是推荐的 :)
另一个答案的答案:
您无法获得以兆字节为单位的数组大小,至少在不做一些棘手的、不受支持的* C voodoo 的情况下是这样。 NSArray 是一个类簇,这意味着我们不知道它是如何在内部实现的。确实,使用的实现可以change depending on how many items are in the array。此外,数组的大小与数组引用的对象的大小不相交,因为这些对象位于堆的其他位置。即使是保存对象指针的结构在技术上也不是数组的“一部分”,因为它不一定是堆上实际的NSArray 旁边的calloc。
如果您想要数组结构本身的大小,那显然只有 4 个字节:
NSLog(@"Size: %d", sizeof(NSArray));
打印:
2010-03-24 20:08:33.334 EmptyFoundation[90062:a0f] Size: 4
(当然,这不是一个体面的表示,因为NSArray 可能只是另一种对象的抽象接口,通常类似于NSCFArray。如果你查看NSArray.h,你会看到一个NSArray 没有实例变量。对于应该包含其他对象的东西来说很奇怪,嗯?)
*“不支持”我的意思是“不推荐”、“深入研究类集群的内在奥秘”和“未记录的私有 API,如果它存在的话”
【讨论】:
大小可以通过向 NSArray 实例发送 'count' 来确定,打印到控制台可以通过 NSLog() 来完成,例如:
NSArray * array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];
NSLog(@"array size is %d", [array count]);
【讨论】:
查看这篇文章以了解您的数组大小问题
Length of an Array in Objective C
使用 NSLog 写入控制台...
NSLog(@"The array size is %@", arraySize);
【讨论】:
在 Swift 4 中
让 a = ["a","b"]
a.count //2
【讨论】: