Objective c 删除NSMutableArray的元素
我已经尝试修复一个bug很长时间了,我可以提出一些建议。我有两个NSmutableArrayObjective c 删除NSMutableArray的元素,objective-c,nsmutablearray,Objective C,Nsmutablearray,我已经尝试修复一个bug很长时间了,我可以提出一些建议。我有两个NSmutableArraytem和listlist是一个带有数组的数组,所以每次我在完成后将数据加载到tem上,我都会说[list addObject:tem]我的代码是这样的,在向tem添加新的数据集之前,我删除了它的所有元素,然后再次开始添加元素。但是,从tem中删除元素会导致它们也从列表中删除。如何避免将其从列表中删除 不确定您所说的“'list'是一个带数组的数组”是什么意思——如果它是一个标准方法,那么它是错误的——所以
tem
和list
list
是一个带有数组的数组,所以每次我在完成后将数据加载到tem
上,我都会说[list addObject:tem]代码>我的代码是这样的,在向tem
添加新的数据集之前,我删除了它的所有元素,然后再次开始添加元素。但是,从tem
中删除元素会导致它们也从列表中删除。如何避免将其从列表中删除 不确定您所说的“'list'是一个带数组的数组”是什么意思——如果它是一个标准方法,那么它是错误的——所以您应该澄清这一点。但回答我认为是你的问题:
addObject
添加对象本身,即只添加指向数组的指针tem
。两个指针仍然引用同一个NSArray实例,因此通过一个指针执行的任何操作都将通过另一个指针看到。如果这让你感到困惑,你应该这样做
如果确实希望将列表中的对象分组到内部数组(如tem
)中,则每次都应创建一个新的tem
数组:
[list addObject:tem];
tem = [NSMutableArray arrayWithCapacity:1];
// new stuff added to tem will not appear in the array inside list
(这里要注意对象所有权——本例使用了一种方便的方法,可以自动释放tem
,但您可能需要适当地保留和释放
。)
另一方面,如果希望将tem
中的对象添加到列表中,请使用addObjectsFromArray
:
[list addObjectsFromArray:tem];
// objects in list will not be affected by subsequent changes to tem
[tem removeAllObjects];
如果你能发布代码的话,我真的很有用。谢谢你,这非常有用。我的意思是,我希望NSMutableArray列表是一个2D数组,即使用“[NSMutableArray arrayWithArray:myArray]”类型。所以每次我向列表中添加一个新数组时,我都希望它像在2D数组中一样被存储为一个新行。我如何才能做到这一点?@LabelarrayWithArray
不能做到这一点。它只是用您传入的数组的内容填充新数组。没有2DNSMutableArray
类型,由您以2D方式使用阵列。这些问题的答案可能会有所帮助。