我有一个空的可变数组.例如,是否可以在索引2处插入对象,而在索引0和1处没有任何内容?我的意思是动态增加容量或类似的东西..问候.
bbu*_*bum 40
NSMutableArray
不是稀疏数组; 它不允许以后可以填充的空槽. initWithCapacity:
只是向数组提示它将被填充到一定数量; 在实践中通常不需要它,除非你确切地知道要在数组中推送多少项,否则不要打扰它(只是使用init
).
随着对象的添加,可变数组的大小会非常有效地增长.
如果您需要一个支持"漏洞"的数据结构,那么要么使用其他东西,要么将占位符对象放在应该为空的插槽中.
即如果你想要一个包含10个插槽的阵列,你可以这样做:
NSMutableArray *a = [NSMutableArray array];
for(int i = 0; i<10; i++) [a addObject: [NSNull null]];
Run Code Online (Sandbox Code Playgroud)
然后,您可以检查检索isEqual: [NSNull null]
到的对象是否为空槽.您可以使用replaceObjectAtIndex:withObject:
将对象粘贴到特定索引处.
或者您可以使用不同的数据结构; 例如,带有索引的字典作为键可以工作.
alb*_*amg 11
您可以使用NSPointerArray.
NSPointerArray是一个在NSArray之后建模的可变集合,但它也可以保存NULL值,这些值可以插入或提取(并且有助于对象的计数).而且,与传统数组不同,您可以直接设置数组的计数.
NSPointerArray
适用于OS X v10.5及更高版本以及iOS 6.0及更高版本.如果您针对较低的操作系统版本,则可以,例如:
使用a NSMutableDictionary
,将索引包装成NSNumber
s并将其用作键.
使用a NSMutableArray
并用NSNull
对象填充"孔" .
归档时间: |
|
查看次数: |
27556 次 |
最近记录: |