8 cocoa objective-c nsmutablearray nsarray
对于基于唯一整数键的数据集,我有一个未确定的大小.
我想使用NSMutableArray快速查找,因为我的所有键都是基于整数的.
我想做这个.
NSMutableArray* data = [NSMutableArray array]; // just create with 0 size
Run Code Online (Sandbox Code Playgroud)
然后人们会开始用整数索引向我扔数据(都是唯一的)所以我只想做这样的事......
if ([data count] < index)
[data resize:index]; // ? how do you resize
Run Code Online (Sandbox Code Playgroud)
并调整数组大小,以便我可以...
[data insertObject:obj atIndex:index];
Run Code Online (Sandbox Code Playgroud)
最后一个尺寸和新尺寸之间的所有槽都为零,最终将在以后填充.
所以我的问题是如何调整现有的大小NSMutableArray?
谢谢,罗马
bbu*_*bum 32
使用NSPointerArray.
NSPointerArray是一个在NSArray之后建模的可变集合,但它也可以保存NULL值,这些值可以插入或提取(并且有助于对象的计数).而且,与传统数组不同,您可以直接设置数组的计数.在垃圾收集环境中,如果指定归零弱内存配置,则如果收集了一个元素,则将其替换为NULL值.
如果您要使用像解决方案这样的字典,请使用NSMapTable.它允许整数键.推荐的基于NSMutableDictionary的解决方案具有与整数键的所有装箱和拆箱相关的大量开销.
Jas*_*son 18
听起来你的需求会更好地满足NSMutableDictionary.您需要将ints 包装到NSNumber对象中,如下所示:
-(void)addItem:(int)key value:(id)obj
{
[data setObject:obj forKey:[NSNumber numberWithInt:key]];
}
-(id)getItem:(int)key
{
return [data objectForKey:[NSNumber numberWithInt:key]];
}
Run Code Online (Sandbox Code Playgroud)
放大a的大小并不容易NSMutableArray,因为你不能在中间插槽中有零个对象.但是,您可以使用[NSNull null]"填充"来创建稀疏数组的外观.
| 归档时间: |
|
| 查看次数: |
5734 次 |
| 最近记录: |