我试图随机获取数组的值,但是我收到了错误 这是我目前的代码:
NSMutableArray *validMoves = [[NSMutableArray alloc] init];
for (int i = 0; i < 100; i++){
[validMoves removeAllObjects];
for (TileClass *t in tiles ) {
if ([self blankTile:t] != 0) {
[validMoves addObject:t];
}
}
NSInteger pick = arc4random() % validMoves.count;
[self movePiece:(TileClass *)[validMoves objectAtIndex:pick] withAnimation:NO];
}
答案 0 :(得分:11)
您得到的错误(算术异常)是因为validMoves
为空,当您执行模数运算时,这会导致除以零。
您必须明确检查空validMoves
数组的大小写。
此外,您应该使用arc4random_uniform
来避免模偏差。
if (validMoves.count > 0) {
NSInteger pick = arc4random_uniform(validMoves.count);
[self movePiece:(TileClass *)[validMoves objectAtIndex:pick] withAnimation:NO];
} else {
// no valid moves, do something reasonable here...
}
最后评论不是arc4random_uniform(0)
返回0
,因此应避免这种情况,或者您将尝试访问空数组的第一个元素,这当然会使您的应用程序崩溃