In a chess game I would like to use a 2-dimensional array to track positions of pieces at the chess board.
Initially I thought to create an NSMuteableArray and indicate unoccupied squares by nil. The occupied slots should hold a pointer to a Piece object...
However the following code:
NSMutableArray* _board;
...
_board = [[NSMutableArray alloc] init];
for (int i = 0; i < 8; i++) {
    NSMutableArray *row = [[NSMutableArray alloc] init];
    for (int j = 0; j < 8; j++) {
        [row addObject:nil];
    }
    [_board addObject:row];
}
fails with the runtime error:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
So nil can't be passed as argument to addObject... what to do here instead?