iPhone:反转NSMutablearray时收到警告

时间:2012-03-16 06:26:16

标签: iphone objective-c ios nsmutablearray warnings

我需要反向(按降序排序)NSMutablearray。我尝试了以下代码并且它可以工作,但是收到了警告。我怎么能删除警告?

NSMutablearray *resStatusArray;

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

    resStatusArray=[[resStatusArray reverseObjectEnumerator] allObjects];
Warning:Incompitable pointer types assigning to 'NSMutablearray*_strong' from ' NSarray *'

4 个答案:

答案 0 :(得分:7)

user1118321在说明中是正确的。要修复它,您将创建一个新的可变数组。我怀疑这比演员更安全。

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

答案 1 :(得分:4)

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

答案 2 :(得分:0)

如果您确定自己在做什么,可以使用演员:

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

但是,我怀疑这在语义上是正确的。

答案 3 :(得分:0)

将其设为等于:

[NSMutableArray arrayWithArray:[[arrayNameToReverse reverseObjectEnumerator] allObjects]];

这实际上是从旧的可变数组中创建一个新数组,但是相反。它起作用的原因是因为NSMutableArray是NSArray的子​​类。因此,反转数组的代码是:

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