不兼容的整数到指针转换初始化NSArray*

lak*_*esh -1 objective-c ios

我正在运行这样的代码,它返回给我这个错误:

Incompatible integer to pointer conversion initializing NSArray *_strong with an expression of type 'int'.
Run Code Online (Sandbox Code Playgroud)

代码是这样的:

- (NSArray *)randperm:(int)total
{
    NSMutableArray *array = [[NSMutableArray alloc] init];
    int counter = 0;
    while (counter < total) {
        NSNumber *randomInteger = [NSNumber numberWithInt:(arc4random_uniform(total)+1)];
        if (![array containsObject:randomInteger]) {
            [array addObject:(randomInteger)];
            counter++;
        }

    }
    NSArray *arr = [array copy];
    return arr;
}
Run Code Online (Sandbox Code Playgroud)

我这叫它:

NSArray *array = randperm(6);
Run Code Online (Sandbox Code Playgroud)

这一行给我一个错误.不确定为什么会出现这样的错误.

Dro*_*ppy 5

您正在调用Objective-C方法,就好像它是C:

NSArray *array = randperm(6);
Run Code Online (Sandbox Code Playgroud)

它应该是:

NSArray *array = [self randperm:6];
Run Code Online (Sandbox Code Playgroud)

此外,在返回数组之前无需复制数组:

NSArray *arr = [array copy];
return arr;
Run Code Online (Sandbox Code Playgroud)

做就是了:

return array;
Run Code Online (Sandbox Code Playgroud)