gpt4 book ai didi

iphone - -[__NSArrayM objectAtIndex :]: index 4294967295 beyond bounds for empty array with arc4random

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:49:24 26 4
gpt4 key购买 nike

编辑:我将 arc4random() 替换为 arc4random_uniform() 进行修复

我正在使用试飞来监控坠机事故。一直在修复错误,但是我遇到了这个错误,我不确定为什么索引这么大。

 -[__NSArrayM objectAtIndex:]: index 4294967295 beyond bounds for empty array

很可能这就是bug所在

for (NSUInteger i = 0; i < count; ++i) {
// Select a random element between i and end of array to swap with.
int nElements = count - i;
int n = (arc4random() % nElements) + i;
[randomName exchangeObjectAtIndex:i withObjectAtIndex:n];
[randomImgName exchangeObjectAtIndex:i withObjectAtIndex:n];
[randomID exchangeObjectAtIndex:i withObjectAtIndex:n];
}

导致此处崩溃

//Frog Name Caption
NSString * tempCaption = [defaultFrogImageCaption objectAtIndex:[defaultFrogImageCaption count]-1];
self.dFrogID = [defaultFrogID objectAtIndex:[defaultFrogID count]-1];

我相信这是错误,但我不知道如何解决错误。

感谢所有评论和帮助

-(void)defaultFrogSetup
{
self.imageArray = [[NSMutableArray alloc] initWithObjects:
[UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"defaultFrog/d7.jpg"]],
[UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"defaultFrog/d9.jpg"]],
[UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"defaultFrog/d11.jpg"]],
[UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"defaultFrog/d27.jpg"]],
[UIImage imageWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"defaultFrog/d6.jpg"]],
nil];

//self.defaultFrogID = [[NSMutableArray alloc] initWithObjects:@"6",@"8",@"10",@"26",@"5",nil];
self.defaultFrogID = [[NSMutableArray alloc] initWithObjects:@"6",@"8",@"10",@"24",@"5",nil];
self.defaultFrogImageCaption = [[NSMutableArray alloc] initWithObjects:@"Verreaux's Tree Frog",@"Green Tree Frog",@"Red-Eyed Tree Frog",@"Crucifix Frog",@"Eastern Dwarf Tree Frog",nil];

NSUInteger count = [self.defaultFrogID count];
//NSLog(@"Count %i",[self.defaultFrogID count]);
NSMutableArray *randomImgName = self.imageArray;
NSMutableArray *randomID = self.defaultFrogID;
NSMutableArray *randomName = self.defaultFrogImageCaption;

//likely bug here
for (NSUInteger i = 0; i < count; ++i) {
// Select a random element between i and end of array to swap with.
int nElements = count - i;
int n = (arc4random() % nElements) + i;
[randomName exchangeObjectAtIndex:i withObjectAtIndex:n];
[randomImgName exchangeObjectAtIndex:i withObjectAtIndex:n];
[randomID exchangeObjectAtIndex:i withObjectAtIndex:n];
}
self.imageArray = randomImgName;
self.defaultFrogID=randomID;
self.defaultFrogImageCaption=randomName;

//NSLog(@"default filename %@",self.defaultFrogImageCaption);
//NSLog(@"default frog ID %@",self.defaultFrogID);

self.imageViewTop.alpha = 1.0;
self.imageViewBottom.alpha = 0.0;
self.imageViewBottom = [[UIImageView alloc] initWithFrame:CGRectMake(0,44,320,367)];
self.imageViewTop = [[UIImageView alloc] initWithFrame:CGRectMake(0,44,320,367)];
[self.view addSubview:imageViewTop];
[self.view addSubview:imageViewBottom];
self.buttonCaption = [UIButton buttonWithType:UIButtonTypeCustom];
//default placement
self.buttonCaption.frame = CGRectMake(245, 367, 70, 44);
//[buttonCaption setTitle:@"\u00A9" forState:UIControlStateNormal];
[self.buttonCaption addTarget:self action:@selector(buttonCheck) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.buttonCaption];
[self defaultFrogAnimation:buttonCaption.frame.size.width];

}

-(void)defaultFrogAnimation:(float)previousWidth {




defaultFrog = 1;
foundFrog = 0;

//picture loop
imageViewTop.image = imageViewBottom.image;
imageViewBottom.image = [imageArray objectAtIndex:[imageArray count] - 1];
[imageArray insertObject:imageViewBottom.image atIndex:0];
[imageArray removeLastObject];
imageViewTop.alpha = 1.0;
imageViewBottom.alpha = 0.0;

//Frog Name Caption
NSString * tempCaption = [defaultFrogImageCaption objectAtIndex:[defaultFrogImageCaption count]-1];
self.dFrogID = [defaultFrogID objectAtIndex:[defaultFrogID count]-1];

// make the buttons content appear in the top-left
[buttonCaption setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
[buttonCaption setContentVerticalAlignment: UIControlContentVerticalAlignmentCenter ];

[defaultFrogImageCaption insertObject:tempCaption atIndex:0];
[defaultFrogImageCaption removeLastObject];
[defaultFrogID insertObject:dFrogID atIndex:0];
[defaultFrogID removeLastObject];

//button setting

[buttonCaption.titleLabel setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
[buttonCaption.titleLabel setFont:[UIFont systemFontOfSize:17]];
[buttonCaption setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

[[buttonCaption layer] setCornerRadius:5.0f];
[[buttonCaption layer] setMasksToBounds:YES];
[[buttonCaption layer] setBackgroundColor:[[UIColor colorWithRed:255 green:255 blue:255 alpha:1] CGColor]];
[buttonCaption.titleLabel setFrame:CGRectMake(0,9, 25, 25)];
stringsize = [tempCaption sizeWithFont:[UIFont systemFontOfSize:19]];
CGFloat diff = stringsize.width - previousWidth;
//NSLog(@"diff %f",diff);

[UIView animateWithDuration:3

animations:^{
imageViewTop.alpha = 0.0;
imageViewBottom.alpha = 1.0;
}
completion:^(BOOL completed){
if (completed)
[self defaultFrogAnimation:stringsize.width];
}

];

[UIView animateWithDuration:0.1 delay:0 options:0
animations:^{
[buttonCaption setTitle:tempCaption forState:UIControlStateNormal];

NSLog(@"frog Name %@",tempCaption );
NSLog(@"frog ID %@",dFrogID);
}
completion:^(BOOL completed)
{
}];

[UIView animateWithDuration:0.3 delay:0 options:0
animations:^{
[buttonCaption setFrame:CGRectMake(buttonCaption.frame.origin.x-diff,
buttonCaption.frame.origin.y,
buttonCaption.frame.size.width + diff,
buttonCaption.frame.size.height)];
}
completion:^(BOOL completed){
}];
}

最佳答案

数组的大小为零。大数实际上是 -1 表示为无符号整数。当您评估 [array count]-1 时,由于数组大小为零,它会尝试访问索引 -1 处的对象。我怀疑数组 defaultFrogId 或 defaultFrogIdCaption 是空的,因为您在声明它时没有指定保留或其他内容。

关于iphone - -[__NSArrayM objectAtIndex :]: index 4294967295 beyond bounds for empty array with arc4random,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8936760/

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