[英]EXC_ARITHMETIC when accessing random elements of NSArray
我正在嘗試隨機獲取數組的值,但到目前為止我這里遇到了錯誤:
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];
}
您得到的錯誤(算術異常)是因為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
,因此應避免這種情況,否則您將嘗試訪問空數組的第一個元素,這當然會使您的應用程序崩潰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.