-1

問題は Xcode にありました。Xcode を再起動してクリーン ビルドを試すことで解決しました。お試しいただきありがとうございます。

親クラス

CardGame.h

#import <Foundation/Foundation.h>
#import "Deck.h"

@interface CardGame : NSObject

- (id) initWithCardCount:(NSUInteger)cardCount usingDeck:(Deck *) deck;

- (Card *) cardAtIndex: (NSUInteger) index;

@end

子クラス

CardMatchingGame.h

#import "CardGame.h"

@interface CardMatchingGame : CardGame

- (void) flipCardAtIndex: (NSUInteger) index;

@end

CardMatchingGame.m

- (void) flipCardAtIndex: (NSUInteger) index {
Card *card = [self cardAtIndex:index]; // The error I get is on this line
self.currentAction = [NSString stringWithFormat:@"You flipped up %@", 
                                                        card.contents];

私が得るエラー

「CardMatchingGame」の目に見える @interface は、セレクター cardAtIndex: (NSUInteger) index を宣言しません。

同様の質問を閲覧しましたが、答えは子クラスが正しい親ファイルを見つけられないことに関係しています。これは私には当てはまりません。私は継承の初心者ですが、これは間違っていますか?

4

2 に答える 2

1

CardGame.h をインポートする必要があります。インポートしないと、サブクラス コードで参照していないため、コンパイラは見つからないと文句を言います。

例: import "CardGame.h"CardMatchingGame.h の先頭に入力します。

于 2013-05-18T02:07:46.097 に答える
0

問題はあなたの実装にあるようですcardAtIndex:- あなたはそのコードに間違いを犯しています。私の推測ではinitWithCardCount:、実際にはインスタンス メソッドであるのに、おそらくクラス メソッドとして間違った方法で呼び出している可能性があります。

于 2013-05-18T02:19:52.807 に答える