我正在调试我的代码,因为我认为可能就是这种情况 - 它应该创建并添加带有addCards:
的卡到deck(数组),因为在obj-c中所有对象都是在堆 - 在每个堆栈帧上只是一个指向card
的指针?意思是它只创建了一个卡片对象......?导致错误的是我的卡片属性(形状,颜色等......)是零。
- (id)init
{
self = [super init];
if (self) {
self = [self initRecur:0];
}
return self;
}
- (id)initRecur:(int)i {
SetCard *card = [[SetCard alloc]init];
if (i < [[SetCard validShapes]count]) {
card.shape = [SetCard validShapes][i];
self = [self initRecur: i+1];
}
if (i < [[SetCard validColors]count]) {
card.color = [SetCard validColors][i];
self = [self initRecur: i+1];
}
if (i < [[SetCard validShades]count]) {
card.shading = [SetCard validColors][i];
self = [self initRecur: i+1];
}
if (i < [SetCard maxShapes]) {
NSNumber *num = [NSNumber numberWithInt:i];
card.shading = num;
self = [self initRecur: i+1];
}
[self addCard:card atTop:YES];
return self;
}
类方法只返回一个数字数组,如下所示:
/* Returns a number of the number of different shapes
* that is used in a game of Set. */
+ (NSArray *)validShapes
{
return @[@1, @2, @3];
}