gpt4 book ai didi

objective-c - 访问 NSArray 的随机元素时的 EXC_ARITHMETIC

转载 作者:太空狗 更新时间:2023-10-30 03:32:00 24 4
gpt4 key购买 nike

我试图随机获取数组的值,但出现错误到目前为止,这是我的代码:

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,因此应该避免这种情况,否则您将尝试访问空的第一个元素数组,这当然会使您的应用程序崩溃。

关于objective-c - 访问 NSArray 的随机元素时的 EXC_ARITHMETIC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13812269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com