-7

複雑なタイトルで申し訳ありませんが、これを表現する最善の方法が本当にわかりません。ここには2つの方法があります.h

@interface Deck : NSObject

-(void) shuffle: (NSMutableArray *) unshuffledDeck;

-(NSMutableArray *) giveHand: (NSMutableArray *)  deck;

-(void) moveOpperand: (NSMutableArray *) moveFrom :(NSMutableArray *) moveTo;

@end

.m

-(void) moveOpperand: (NSMutableArray *) moveFrom :(NSMutableArray *) moveTo{
    NSString *opperandObject = [moveFrom lastObject];
    if (opperandObject) {
    [moveTo addObject:moveFrom.lastObject];
        [moveFrom removeLastObject];
    }
}

-(NSMutableArray *) giveHand: (NSMutableArray *)  deck{
    NSMutableArray *hand;
    for (int i=0; i<7; i++) {
      [moveOpperand [_refrenceDeck] [hand]]; //use of undeclared identifier 'moveOpperand'
    }
    return hand;
}

ご覧のとおり、上のものを下のもので呼び出そうとしていますが、問題は、宣言されていない識別子の使用を示す上でコメントしたメッセージが引き続き表示されることです。なぜこれが発生しているのかわかりません。同じ .m ファイル内の別のメソッドから作成したメソッドを呼び出しますか?

4

2 に答える 2

2

[self moveOperand:_referenceDeck :hand];宣言されているように、メソッドはやや混乱しています - moveFrom は parameter であり、パラメーター名ではないため、 [self moveOperand:_referenceDeck moveFrom:hand]; 間違っている

于 2012-07-18T19:43:08.400 に答える
1
[self moveOpperand:arg1 :arg2];

selfまた、インスタンス メソッドではインスタンス / 実際のオブジェクトを参照し、クラス (「静的」) メソッドではクラス自体を参照することに注意してください。

于 2012-07-18T19:36:57.350 に答える