目标C:堆上的递归和对象

时间:2013-02-14 20:36:58

标签: objective-c recursion

我正在调试我的代码,因为我认为可能就是这种情况 - 它应该创建并添加带有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];
}

0 个答案:

没有答案