它现在有效,问题出在Xcode.It通过重新启动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)索引;
我浏览了类似的问题,但答案与子类没有找到正确的父文件有关,对我来说情况并非如此。我是继承新手,我做错了吗?
答案 0 :(得分:1)
您需要导入CardGame.h。如果你不导入它,编译器会抱怨它无法找到它,因为你没有在你的子类代码中引用它。
示例:在CardMatchingGame.h顶部输入import "CardGame.h"
答案 1 :(得分:0)
问题似乎出现在cardAtIndex:
的实现中 - 您在该代码中犯了一些错误。我的猜测是你可能以错误的方式调用initWithCardCount:
- 也许作为一个类方法,实际上它是一个实例方法。