代码之家  ›  专栏  ›  技术社区  ›  JamesB41

对象数组

  •  1
  • JamesB41  · 技术社区  · 15 年前

    在我的视图控制器中,我试图实例化一个board,并将boardSize^2正方形添加到所述对象中。电路板包含一个NSMUTABLEARRY*方块。

    我还创建了一个方便的方法来设置一个名为initWithDimension的NSNumber*boardSize。

    在我的touchsbegind handler中,我有以下几点:

    board *game_board = [[board alloc] initWithDimension:10];   
    int size = [game_board.boardSize intValue];
    
    for(int i = 0; i <= size; i++) {
        square *s = [[square alloc] init];
        [game_board.squares addObject:s];
        [s release];
    }
    
    NSLog(@"%i", size);
    NSLog(@"%@", [game_board.squares objectAtIndex:0]);
    

    …我得到10(如预期)然后是(空)。对于一个有经验的开发人员来说,这一点可能是显而易见的,我已经努力解决了一个小时,但已经放弃了。我也试过了,但没有发布[s],同样的结果。我还进口了square.h和board.h。

    谢谢。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Quinn Taylor    15 年前
    1. 您面临的核心问题是:在您发布的代码中,您从未将对象引用指定给 game_board.squares ,因此它隐式初始化为 nil . 当你打电话的时候 addObject: squares = [[NSMutableArray alloc] initWithCapacity:boardSize*boardSize]] 在添加对象之前。

    2. 你应该在 initWithDimensions: Board 是公司的经理吗 Square

    3. 从风格上讲,类名最好用Pascal大小写,这意味着每个单词都是大写的: MyClassName . (在这种情况下,请选择 董事会 board square .)

        2
  •  3
  •   Michael Chinen    15 年前

        3
  •  1
  •   Quinn Taylor    15 年前

    我猜是这样的 game_board.squares 为空。因此,将消息传递给它(addObject)在循环中不起任何作用。以及 objectAtIndex

    你能把你的信寄出去吗 init 来自square类的代码?