NSMutableArray initwithcapacity值总是为"0"

Yus*_*KAN 0 xcode objective-c nsmutablearray

我的代码如下:

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

NSLog (@"%f",[tmpValue count]);
Run Code Online (Sandbox Code Playgroud)

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

Sti*_*sis 5

试试这个:

NSLog (@"%d", [tmpValue count]);
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • @bryanmac`capacity`不是数组的最大大小,也不与`count`有任何关系,`count`基于已添加和删除的条目数.`capacity`只是初始预分配的"提示",它可能被类完全忽略. (2认同)