我在 java 和 c++ 开发方面有很多经验,所以类和抽象数据对我来说很容易。不久前我才开始目标 C,我主要是在课堂上与 globals 一起工作,一切进展顺利。我刚刚决定抽象我的大部分代码以减少意大利面条式代码,但我遇到了一个自周六以来我一直无法克服的问题。
大纲:
我正在做一个纸牌游戏。我最近将卡片数据抽象为一个包含 3 个变量的类;(int)i_cardValue、(int)i_cardSuit 和 (UIImage *)uii_cardImage。我通过调用创建了一张卡片
-(PlayingCard *)initWithValue:(int)i_initValue suit:(int)i_initSuit image:(UIIMage*)uii_initImage {
[self setCardValue:i_initValue];
[self setCardSuit:i_initSuit];
[self setCardImage:i_initImage];
return self;
}
我还抽象了引擎部分(基本上是套牌功能,例如洗牌和套牌管理)。甲板是一个可变数组,我有一个初始化甲板功能。
NSMutableArray *nsma_deck;
-(void)initDeck {
nsma_deck = [[NSMutableArray alloc] initWithCapacity:52];
}
现在,在我的视图控制器中,我调用了 initDeck,然后我使用诸如
[pce_Engine initDeck];
[[pce_Engine nsma_deck] addObject:[[PlayingCard alloc] initWithValue:13 suit:2 image:[UIImage imageNamed:@"2C.png"]]];
pce_Engine 是 PlayingCardEngine 类型的变量。我将 NSLog 行放入 initDeck,当我运行我的程序时,它们不会显示在控制台中。他们没有被调用,所以数组没有被分配,因此我不能向数组添加东西?我以为我做得很好,但是要么我做错了,要么我错过了一些东西,因为将它添加到视图中不会让它显示出来。使用NSLog,deck == nil,所以我想问题是我没有正确访问deck,因此没有添加值,并且到处只有空变量:(。我尝试查看很多关于目标c的教程,但我什至还没有找到一个抽象的,所以我一直无法找到我的问题。
谁能指出我正确的方向?