Iphone 从阵列中删除等效对象

Iphone 从阵列中删除等效对象,iphone,ios,nsarray,Iphone,Ios,Nsarray,我知道如何使用NSMutableArray实现这一点,但清空整个NSArray类数组的正确方法是什么。我需要这样做,因为我需要重新加载tableView。我正在使用ARC。NSArray是一个不可变(不可更改)的类,因此无法从数组中删除元素。基本上,您必须扔掉该阵列,并用新的NSArray替换它。或者,您可以只使用NSMutableArrayNSArray是一个不可变(不可更改)的类,因此无法从数组中删除元素。基本上,您必须扔掉该阵列,并用新的NSArray替换它。或者,您可以只使用一个NSMu

我知道如何使用NSMutableArray实现这一点,但清空整个NSArray类数组的正确方法是什么。我需要这样做,因为我需要重新加载tableView。我正在使用ARC。

NSArray
是一个不可变(不可更改)的类,因此无法从数组中删除元素。基本上,您必须扔掉该阵列,并用新的
NSArray
替换它。或者,您可以只使用
NSMutableArray

NSArray
是一个不可变(不可更改)的类,因此无法从数组中删除元素。基本上,您必须扔掉该阵列,并用新的
NSArray
替换它。或者,您可以只使用一个
NSMutableArray

NSArray是一个不可变类型。创建后不能更改其内容


使用NSMutableArray或用新(空)NSArray替换它。

NSArray是一种不可变类型。创建后不能更改其内容


使用NSMutableArray或用新的(空的)NSArray替换它。

您不能清空不可变的NSArray,最好的方法是获取阵列的可变副本:

NSMutableArray *arr=[yourArr mutableCopy];
[arr removeAllObjects];

您不能清空不可变的NSArray,最好的方法是获取阵列的可变副本:

NSMutableArray *arr=[yourArr mutableCopy];
[arr removeAllObjects];


出于好奇,是什么让你认为tableview必须使用
NSArray
作为其数据源?@borrden我不这么认为,但我正在使用其他人的代码工作,我不想做太多更改如果你想重新加载tableview,就像你说的,为什么不直接执行[tableview reloadData]?你知道为什么NSMutableArray的名字中有Mutable,而NSArray没有,对吗?Carlton Gibson的回答似乎给出了仅有的两种可能性。只是出于好奇,是什么让你认为tableview必须使用
NSArray
作为其数据源?@Borrden我不这么认为,但我正在使用其他人的代码工作,如果你想重新加载一个tableView,就像你说的,为什么你不直接做[tableView重新加载数据]?你知道为什么NSMutableArray在他的名字里有Mutable,而NSArray没有,对吧?Carlton Gibson的回答似乎给出了仅有的两种可能性。如果我使用ARC,我还需要释放它吗?我不习惯使用它,所以很抱歉这个愚蠢的问题。试一试,编译器将不允许您在ARC模式下调用“release”。对不起,错过了您正在使用的ARC。我已经更新了答案如果我使用ARC我还需要发布吗?我不习惯使用它,所以很抱歉这个愚蠢的问题。试一试,编译器将不允许您在ARC模式下调用“release”。对不起,错过了您正在使用的ARC。我已经更新了答案这不会清空我知道的原始阵列;)只是因为你不能清空一个不可变的数组。这不会清空我知道的原始数组;)只是因为你不能清空一个不可变的NSArray。我发现你的解决方案是最优的,甚至在你发布答案之前。所以我认为你的答案是最好的,甚至在你发布答案之前,我就发现你的解决方案是最优的。所以关键在于你有最好的答案。