更改objective-c中的NSMutableArray大小
我环顾四周,什么也找不到,我开始觉得用objective-c是不可能的 我有一个更改objective-c中的NSMutableArray大小,objective-c,arrays,size,Objective C,Arrays,Size,我环顾四周,什么也找不到,我开始觉得用objective-c是不可能的 我有一个NSMutableArray*myMutableArray,大小取决于加载的csv文件。因为我没有设置myMutableArray的大小,所以我不能: if (c == 5){ myMutableArray[q] = [[NSNumber numberWithFloat:myOtherArray] stringValue]; q = q + 1;
NSMutableArray*myMutableArray
,大小取决于加载的csv文件。因为我没有设置myMutableArray的大小,所以我不能:
if (c == 5){
myMutableArray[q] = [[NSNumber numberWithFloat:myOtherArray] stringValue];
q = q + 1;
c = 0;
}
Else {
c = c + 1;
}
由于myMutableArray
在技术上是大小为nil
的,我想我无法向其中添加对象
在某些情况下,q
可以介于1500和2500之间
我的问题是,如何使“myMutableArray”在每个循环上改变大小
如果这是不可能的,我想我将不得不使myMutableArray
非常大-但我需要myMutableArray
中的值作为图形。如果我使用myMutableArray=[[NSMutableArray alloc]initWithCapacity:5000]代码>并且不使用5000个内存位置,这些位置是零还是0?(抱歉,如果技术词汇有误,我所说的内存位置是指提供给myMutableArray
的内存)
谢谢,如果还有什么我可以补充的,请随时告诉我
编辑:我试图实现的是向数组中添加数据,然后用这些数据创建一个图,你不能有一个零星填充的数组。创建一个容量为5000的数组只不过是一个提示,提示您将在数组中存储多少数据。考虑使用字典数组,其中字典包含<代码> q>代码>值(大概是一个坐标)和相关值。然后,如果需要(用于打印),可以根据q
值对阵列进行排序。然后您可以像往常一样将字典添加到数组中(addObject:
)。类向管理可修改对象数组的对象声明编程接口。此类将插入和删除操作添加到从NSArray继承的基本数组处理行为中。
如果你
阵列容量:
创建并返回一个NSMutableArray对象,该对象具有足够的已分配内存,最初可容纳给定数量的对象
可变数组可根据需要扩展。在声明它们时,我们可以这样初始化它们:
+ (instancetype)arrayWithCapacity:(NSUInteger)numItems
在这里,numItems只是建立对象的初始容量
稍后要添加更多数据,即要扩展可变数组,请使用
addObject:
它所做的是,在可变数组的末尾插入一个给定的对象
- (void)addObject:(id)anObject
需要注意的是:
要添加到数组内容末尾的对象。此值不能为零。如果一个对象为零,它会引发一个NSInvalidArgumentException。你最好解释一下你到底需要实现什么,因为很明显你会做一件错误的事情,还有一件事——因为myMutableArray在技术上是大小为零的——它不可能是大小为零的nil@AndreyChernukha编辑了我想要达到的目标如果你想添加因此,简单地使用addObject:method有什么不对?即使我没有设置数组大小,我也可以这样做吗?arrayWithCapacity:
并不总是分配足够的内存来容纳指定数量的对象。它仅用作配置阵列的提示。由于数组不能有洞(空插槽),所以不需要消耗所有的内存。@bbum抱歉,但NSMutableArray类引用的苹果文档中另有说明:(否;docs只是确定初始容量,而不是阵列已分配内存来容纳所有容量。阵列的备份存储不是线性分配的内存块,详细信息会随着阵列的大小而变化。这可能会有所启发: