1

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];

}

4

2 に答える 2

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]基本的に、Javaの慣習、または[object methodArg: value]Javaのどこにあるobject.method()かを覚えておいてください。object.method(value)

また、色のパレットは「パレット」と綴られています(バグではなく、綴りの間違い)。

于 2012-10-02T08:14:56.107 に答える
1

メソッドのターゲット、つまりメソッドが呼び出されるインスタンスも指定する必要があります。もちろん、引数の:代わりに使用します。[]

[self checkColorPalette][self getColorFromPalette:i]

于 2012-10-02T07:58:56.463 に答える