在国际象棋比赛中,我想使用二维阵列来追踪棋盘上棋子的位置。
最初,我想创建一个NSMuteableArray
并通过nil
指示未占用的广场。占用的槽应该有一个指向Piece
对象的指针......
但是以下代码:
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];
}
因运行时错误而失败:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
所以nil
不能作为参数传递给addObject
......而是在这里做什么呢?
答案 0 :(得分:2)
尝试
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:[NSNull null]];
}
[_board addObject:row];
}
可以看到使用[NSNull null]
代替nil
的原因here