为什么同一类中定义的函数被视为未声明?如何正确申报?

EBM*_*EBM 0 objective-c

我在评论行上收到错误"未声明的标识符":

- (BOOL) isInIntArray:(NSInteger[])array theElem:(int)elem{
    int i = 0;
    NSInteger sizeOfArray = (sizeof array) / (sizeof array[0]);
    while(i < sizeOfArray){
        if(array[i] == elem){
            return TRUE;
        }
        i++;
    }
    return FALSE;
}

- (int)getNextUnusedID{
    int i = rand()%34;
    while ([isInIntArray:idsUsed theElem:i]) { //here: Use of undeclared identifier 'isInIntArray'
        i = rand()%34;
    }
    return i;
}
Run Code Online (Sandbox Code Playgroud)

我真的不明白为什么,他们在同一个.m文件中.那为什么会这样?

此外,这段代码:

NSInteger sizeOfArray = (sizeof array) / (sizeof array[0]);
Run Code Online (Sandbox Code Playgroud)

给我警告:

sizeof on array函数将返回Sizeof'NSInteger*'(又名:'int*')而不是'NSInteger []'"

我该如何正确确定阵列的大小?

Cap*_*uff 6

看起来你错过了self这条线

while ([isInIntArray:idsUsed theElem:i])
Run Code Online (Sandbox Code Playgroud)

这应该是:

while ([self isInIntArray:idsUsed theElem:i])
Run Code Online (Sandbox Code Playgroud)