-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) 索引;

我浏览了类似的问题,但答案与子类没有找到正确的父文件有关,这对我来说不是这样。我是继承新手,我做错了吗?

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 回答