iPhone:反转NSMutablearray时收到警告

iPhone:反转NSMutablearray时收到警告,iphone,objective-c,ios,nsmutablearray,warnings,Iphone,Objective C,Ios,Nsmutablearray,Warnings,我需要反向(降序排序)NSMutablearray。我如何删除警告 NSMutablearray *resStatusArray; [resStatusArray sortUsingSelector:@selector(compare:)]; resStatusArray=[[resStatusArray reverseObjectEnumerator] allObjects]; allObjects方法返回的是一个NSArray*,而不是一个NSMutableArray*,因此编

我需要反向(降序排序)NSMutablearray。我如何删除警告

NSMutablearray *resStatusArray;

[resStatusArray sortUsingSelector:@selector(compare:)];

    resStatusArray=[[resStatusArray reverseObjectEnumerator] allObjects];

allObjects
方法返回的是一个
NSArray*
,而不是一个
NSMutableArray*
,因此编译器会告诉您对
NSMutableArray*
变量的赋值不正确。

如果您确定要执行的操作,可以使用强制转换:

resStatusArray=(NSMutableArray*_strong)[[resStatusArray reverseObjectEnumerator] allObjects];

然而,我怀疑这在语义上是否正确。

user1118321的解释是否正确。要修复它,您需要创建一个新的可变数组。我怀疑这比石膏更安全

resStatusArray = [NSMutableArray arrayWithArray:[[resStatusArray reverseObjectEnumerator] allObjects]];
resStatusArray = [NSMutableArray arrayWithArray:[[resStatusArray reverseObjectEnumerator] allObjects]];
将其设置为等于:

[NSMutableArray arrayWithArray:[[arrayNameToReverse reverseObjectEnumerator] allObjects]];
这实质上是从旧的可变数组创建一个新数组,但相反。它工作的原因是因为NSMutableArray是NSArray的一个子类。因此,反转数组的代码是:

resStatusArray = [NSMutableArray arrayWithArray:[[resStatusArray reverseObjectEnumerator] allObjects]];