gpt4 book ai didi

ios - if 子句中的简单倒数,导致索引超出范围

转载 作者:行者123 更新时间:2023-11-28 20:10:55 24 4
gpt4 key购买 nike

一切正常,除了后退按钮有一个我不太明白的缺陷。我找到了一个修复程序,但我想了解为什么代码的行为如此奇怪。数组末尾有一个 nil 对象。

应该是但不是工作代码(索引超出范围):

- (IBAction)back-button:(id)sender
{
currentArrayIndex--;

if (currentArrayIndex == 0)
{
currentArrayIndex = [array count];
}
}

这是固定但看似错误的代码:

- (IBAction)back-button:(id)sender
{

currentArrayIndex--;

if (currentArrayIndex == -1)
{
currentArrayIndex = [array count] -1;
}
else if (currentArrayIndex == -2)
{
currentArrayIndex = [array count];
}
}

现在从数学上和编程上来说它没有意义。

“下一步”按钮的代码非常清晰明了,并且在循环法中完美运行。

最佳答案

数组从 0 开始索引。因此第一个对象是 array[0](或等价的 [array objectAtIndex:0])。所以第二个有索引 1 = 2 - 1,第三个有 2 = 3 - 1,最后一个 '[array count]-th ' 有索引 [array count] - 1。所以从这里你可以看到 [array count] 是最后一个有效索引之后的一个,因此确实越界了。

您可以切换步骤的顺序以使其正常工作并再次使其更加直观:

- (IBAction)back-button:(id)sender
{
if (currentArrayIndex == 0)
{
currentArrayIndex = [array count];
}

currentArrayIndex--;
}

关于ios - if 子句中的简单倒数,导致索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20301309/

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