NSMutableArray initwithcapacity值总是为“0”

时间:2011-12-07 23:42:16

标签: objective-c xcode nsmutablearray

我的代码如下:

int totalBarCount = 12;
NSMutableArray *tmpValue = [[NSMutableArray alloc]initWithCapacity:totalBarCount];
[tmpValue addObject:[NSNumber numberWithFloat:tmpToplam]];

NSLog (@"%f",[tmpValue count]);

[tmpValue count]总是返回0.为什么?我怎么能得到12?

2 个答案:

答案 0 :(得分:5)

试试这个:

NSLog (@"%d", [tmpValue count]);

这将为您提供数组中项目的计数,即1。

你不会从-count获得12; 12是阵列的容量,即在需要重新分配其存储之前它可能保留的量。

您现在正在获得0,因为%f是浮点值的格式说明符。但是,您传递的是整数。由于体系结构的工作方式,浮点值的传递方式与整数不同,因此%f格式说明符会导致浮点堆栈上的第一个项被读取。在您的情况下,这恰好是0

答案 1 :(得分:3)

-count发送到NSArray的实例(或者在这种情况下为NSMutableArray)不会产生数组的容量,它实际上会返回集合中的对象数。您可以通过将12个对象放入数组中来-count返回12。