我试图随机获取数组的值,但我得到了一个错误,这是我到目前为止的代码:
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];
}发布于 2012-12-11 09:55:30
您得到的错误(算术异常)是因为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,因此应该避免这种情况,否则您将尝试访问空数组的第一个元素,这当然会导致应用程序崩溃。
https://stackoverflow.com/questions/13812269
复制相似问题