是否可以将方法放在while循环和/或if语句中?

时间:2012-10-02 07:54:46

标签: objective-c

尝试从java转换为objective-c。我很难在这个主题上找到任何东西。我得到错误"语义问题"无法弄清楚。 这是代码:

-(void) createColorPalatte{
for (int i=0; i<4; i++) {
    colorPalatte[i] = [self getRandomColor];
}}
-(BOOL) checkColorPalatte {
for (int i=0; i<4; i++) {
    for (int j=i+1; j<4; j++) {
        if ([getColorFroemPalatte[i]]==[getColorFromPalatte[j]] ) {
            return YES;
        }
    }
}
return NO;

}

-(void) redoColorPalatte {
while (YES==[checkColorPalatte];) {
    [createColorPalatte];
}

}

-(char) getColorFromPalatte: (int) index{
return colorPalatte[index];

}

2 个答案:

答案 0 :(得分:1)

您还需要为您的方法提供目标,即调用它的实例。当然,对于参数,使用:而不是[]

[self checkColorPalette][self getColorFromPalette:i]

答案 1 :(得分:1)

以下是我在您发布的方法中可以看到的修复:

-(BOOL) checkColorPalatte {
for (int i=0; i<4; i++) {
    for (int j=i+1; j<4; j++) {
        if ([self getColorFromPalatte:i]==[self getColorFromPalatte:j] ) { // CHANGED Froem typo and changed [getColorFromPalette[i]] to [self getColorFromPalette:i]
            return YES;
        }
    }
}
return NO;
}

-(void) redoColorPalatte {
while (YES==[self checkColorPalatte]) { // changed [checkColorPalatte]; to [self getColorPalatte]
    [self createColorPalatte]; // ADDED 'self'
}
}

基本上要记住[object method][object methodArg: value]的惯例,在Java中,它更像object.method()object.method(value)

此外,调色板中的颜色拼写为“调色板”(不是错误,而是拼写错误)。