2013-07-20 64 views
0

我有一个类,MatchingGame,其中包含此属性:NSMutableArray的财产无法正常继承

@property (strong, nonatomic) NSMutableArray *cards; 

MatchingGame也有一个setter懒洋洋地实例化卡,就像这样:

- (NSMutableArray *)cards 
{ 
    if (!_cards) _cards = [[NSMutableArray alloc] init]; 
    return _cards; 
} 

类CardMatchingGame继承匹配游戏,所以我希望能够访问子类中的cards属性。然而,除非我添加一个@property到CardMatchingGame.m的@interface ... end代码块,我得到一个Property 'cards' not found on object of type 'CardMatchingGame'

我是新来的iOS和Objective-C编程,所以我不知道是否有关于继承我失踪的怪癖。我不应该能够在超类中定义卡并在子类中进行访问吗?

回答

1

您是否在MatchingGame的.h文件中声明了@property (strong, nonatomic) NSMutableArray *cards;?如果是这样,它将由CardMatchingGame继承。

+0

这做到了。我将CardMatchingGame重构为MatchingGame,并错过了将卡的声明移动到标题。我只在实现文件中拥有它。谢谢。 –

0

假设ClassB继承自ClassA。我意识到像这样的继承。

ClassA.h

@interface ClassA 
//... 
@property (strong, nonatomic) NSMutableArray *cards; 
@end 

ClassB.m

@implementation ClassB 

    - (void)foo 
    { 
     //... 
     self.cards = someValue; 
     //... 
    } 
@end