Dan*_*tos 3 objective-c nsmutablearray nsrangeexception
我很难尝试理解Objective-C的NSMutableArray类中的方法.我使用此类的arrayWithCapacity:static方法创建了一个数组,如下所示:
NSMutableArray * myArray = [NSMutableArray arrayWithCapacity: 10];
Run Code Online (Sandbox Code Playgroud)
然后我尝试访问数组中的元素:
id myVariable = myArray[5];
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 5 beyond bounds for empty array'
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我是否误解了方法描述的任何内容?
谢谢您的帮助.
rma*_*ddy 15
使用arrayWithCapacity:10内部的方法,数组将自己设置为容纳10个对象.但它仍然没有任何对象.
通常,会创建一个空数组并设置为仅包含几个对象.当您添加越来越多的对象时,需要调整内部数组的大小.这意味着需要对更多内存进行malloced,然后将旧对象移动到新内存,并清除旧内存.
如果您知道该数组将包含X个对象,则arrayWithCapacity允许该数组更高效.您仍然可以添加更多对象,但效率将会丢失.
除此之外,您无法访问超出当前计数的数组索引.由于计数最初为0,因此您无法访问任何对象.您需要先添加对象,然后才能访问它们.
| 归档时间: |
|
| 查看次数: |
3310 次 |
| 最近记录: |