在子类上使用关键字self来调用Objective-C中的一个超类方法

时间:2013-05-18 02:03:48

标签: objective-c inheritance

它现在有效,问题出在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)索引;

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

2 个答案:

答案 0 :(得分:1)

您需要导入CardGame.h。如果你不导入它,编译器会抱怨它无法找到它,因为你没有在你的子类代码中引用它。

示例:在CardMatchingGame.h顶部输入import "CardGame.h"

答案 1 :(得分:0)

问题似乎出现在cardAtIndex:的实现中 - 您在该代码中犯了一些错误。我的猜测是你可能以错误的方式调用initWithCardCount: - 也许作为一个类方法,实际上它是一个实例方法。