为什么访问我的NSMutableArray变得更快,一旦我添加更多的对象呢?
很奇怪的事情正在发生。 我填充我的数组,如下所示:
self.workingWithItemCollectionArray = [NSMutableArray arrayWithCapacity:self.itemCollectionArray.count]; self.workingWithItemCollectionArray = [[self.itemCollectionArray mutableCopy]autorelease];
它采用原始NSArray
的可变副本,并将其传递给NSMutableArray
。 当通过点击一个UIButton
访问这个数组中包含的信息时,在检索信息时会有一些延迟。
但是,当我然后更改原始数组添加更多的项目,然后将其传递到可变数组:
NSMutableArray *editedOriginalArray = [NSMutableArray arrayWithArray:self.itemCollectionArray]; [editedOriginalArray addObjectsFromArray:extraObjectsToAdd]; self.itemCollectionArray = [NSArray arrayWithArray:editedOriginalArray]; self.workingWithItemCollectionArray = [NSMutableArray arrayWithCapacity:self.itemCollectionArray.count]; self.workingWithItemCollectionArray = [[self.itemCollectionArray mutableCopy]autorelease];
然后在这之后,我可以按下button,信息立即被访问(而在button保持很短的时间之前)。
任何想法,为什么这可能是?
它与NSMutableArray
如何实现与NSArray
。
因为NSArray
是不可变的,所以对象在字面上被内部存储在一个数组中,例如:
id *objects = malloc(sizeof(id) * count);
但是,当你处理NSMutableArray
,你正在处理一个链表,因为NSMutableArray
需要对数组进行很多修改。 所以,链表上的查找时间要长得多,因为你的对象不是以存储器之间存在一定距离的方式存储的。
有关链接列表的更多信息,请点击此处 。