objective-c - NSMutableArray 计数方法显示 NSMutableArray 计数为 0?

标签 objective-c iphone arrays nsmutablearray

这是我的初始化方法:

-(id)init{

    self = [super init];
    magicNumber = 8;

    myMagicArray = [[NSMutableArray alloc] initWithCapacity:(magicNumber*magicNumber)];
    NSLog(@"this is the magic Array: %d", [myMagicArray count]);

    return self;
}

这是.h:

@interface Magic : NSObject {
    NSMutableArray *myMagicArray;
    int magicNumber;

}

控制台显示数字是 0。不是 64,发生了什么?我已经查看了这篇文章:

StackOverflow Link: https://stackoverflow.com/questions/633699/nsmutablearray-count-always-returns-zero

最佳答案

您混淆了容量和计数。容量只是为数组预留的内存空间,所以当数组扩展时不需要花时间分配内存。

计数是存储在数组中的实际项目数。

-initWithCapacity: 方法创建一个 数组,并提示该数组在重新分配内存之前可以达到多大。当您实际 -addObject: 到数组时,计数会增加。


,———.———.———.———————————————————————————————————.
| 4 | 6 | 8 | <—— room for array to expand ———> |
'———'———'———'                                   |
| count = 3                                     |
|                                               |
'——— memory reserved (capacity) of the array ———'
                        > 3

关于objective-c - NSMutableArray 计数方法显示 NSMutableArray 计数为 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2616604/

相关文章:

iphone - 核心数据 NSPredicate 检查 BOOL 值

ios - 与初始 View Controller 的 View 生命周期方法相关的 appdelegate 方法何时被调用?

ios - 如何在不需要它的屏幕上隐藏 iOS 应用程序中的位置图标?

ios - 在设备上构建失败,退出代码为 1

java - 类型不兼容,需要 java.lang.Integer[],找到 Int[]?

javascript - iframe 不起作用

objective-c - "The dwarfdump binary must exist and must be executable"是什么意思?

iphone - 如何在xcode中导入私有(private)框架

iphone - xcode iphone 项目和 ipad 项目到通用应用程序

java - 阵列矩形旋转