replaceObjectAtIndex错误?

Kri*_*son 2 cocoa-touch objective-c

以下代码:

NSMutableArray *kkk = [NSMutableArray arrayWithCapacity: 20];
[kkk replaceObjectAtIndex:10 withObject: @"cat"];
Run Code Online (Sandbox Code Playgroud)

产生这个

由于未捕获的异常'NSRangeException'终止应用程序,原因:' -
[NSMutableArray replaceObjectAtIndex:withObject:]:索引10超出空数组的边界'第一次抛出时调用堆栈:

Dee*_*olu 7

arrayWithCapacity:分配所需的内存,但它不会用对象填充数组.nil不是填充数组的有效对象.所以如果你需要一个包含空对象的数组,你将不得不做这样的事情,

int size = 20;
NSMutableArray *kkk = [NSMutableArray arrayWithCapacity:size];
for ( int i = 0; i < size; i++ ) {
    [kkk addObject:[NSNull null]];
}
Run Code Online (Sandbox Code Playgroud)

现在你可以安全地替换物体,

[kkk replaceObjectAtIndex:10 withObject: @"cat"];
Run Code Online (Sandbox Code Playgroud)