这里是代码,其中listArray是NSMutableArray
......
listArray = [[NSMutableArray alloc] initWithCapacity:100];
for ( int i = 0 ; i < 100 ; i ++ )
[listArray addObject:[NSNumber numberWithInt:i]];
...
for(int max=99; max >= 0 ; max --)
{
int rN = (arc4random() % max) + 0;
//Warning 1: initialization makes integer from pointer without a cast
int temp = [listArray objectAtIndex:rN];
[listArray insertObject:[listArray objectAtIndex:max] atIndex:rN];
//passing argument 1 of 'insertObject:atIndex:' makes pointer from integer without a cast
[listArray insertObject:temp atIndex:max];
}
答案 0 :(得分:0)
应该是:
NSNumber *temp = [listArray objectAtIndex:rN];
NSMutableArray包含Obj-C对象,这就是你必须使用NSNumber numberWithInt:
的原因。这意味着当您使用objectAtIndex
将其拉出时,您会获得NSNumber *
。
答案 1 :(得分:0)
您需要“取消装箱”int值:
int temp = [[listArray objectAtIndex:rN] intValue];
数组存储对象(此处为NSNumber
),而您需要简单的int
。
同样适用于插入,这就是您在添加时调用[NSNumber numberWithInt:...]
的原因。
编辑:数组中的索引范围为0 ...(count-1),不确定+1
是否做了它应该做的事情。