基本目标C问题

时间:2011-05-08 14:02:04

标签: objective-c

在我的驱动程序类中,我称之为:

NSMutableArray *test = [[myGrid getLoc:5 : 5] getAdjacentLocation: 2 : 2];

getAdjacentLocation实现的头和第一行是:

- (NSMutableArray*) getAdjacentLocation: (int)w: (int)h{
    NSLog(@"checkpoint");
}

getLoc的实现是:

- (Location*)getLoc:(int)i : (int)j {
    NSLog(@"check");
    return (Location*)locations[i][j];
}

这是为了从2d数组中返回一个位置。虽然NSLog是通话,我不认为它正确地返回它? (我可以获得具有属性的二维数组吗?)

我初始化这样的位置

int x = 0;             int y = 0;

        //row
        for(int i = 0; i < 1000; i+=40){
            //column
            for(int j = 0; j < 1000; j+=40) {

                locations[y][x] = [[Location alloc] initWithPosition:CGPointMake(i, j)];

                NSLog(@"%@" ,NSStringFromCGPoint(locations[y][x].locPosition));

                y++;


            }

            x=0;
            y++;

        }

我可能会对内存管理做一些愚蠢的事情,因为这对我来说是全新的。

此getadjacentlocation方法中的第一个语句未执行。为什么? 这可能是一个非常愚蠢的错误,但任何人都可以帮助我吗? 感谢。

2 个答案:

答案 0 :(得分:1)

您的getLoc::方法可能正在返回nil,因为在您的位置初始化代码中,您只是递增y,而不是x,只留下大部分元素位置未定义。修复你的循环以在列内循环增加x。

答案 1 :(得分:0)

Obj-c方法应该有参数和名称。您应该为参数命名,因此应将您的方法声明为getAdjacentLocationWidth:(int)w height:(int)h并调用[object getAdjacentLocationWidth:2 height:2];。我将宽度和高度字添加到方法名称中,以便您可以确定哪个参数是哪个。

(你也应该在-getLoc::方法中命名参数。)

注意:根据对命名参数建议的错误答案的答案进行编辑。