gpt4 book ai didi

ios - 奇怪的索引越界异常

转载 作者:行者123 更新时间:2023-11-29 04:05:51 25 4
gpt4 key购买 nike

我正在尝试以动画方式删除 ScrollView 内的 View 。 ScrollView 的 subview 是从对象数组中填充的。每个对象都有一个代表它的 View 。有时我在删除时会遇到indexOutOfBounds异常。这是我的删除代码:

-(void)deleteView:(UIView *)viewToDelete{
[self.myObjects removeObjectAtIndex:viewToDelete.tag];
[UIView animateWithDuration:0.5 animations:^{
viewToDelete.alpha = 0.0;
for (NSInteger index = viewToDelete.tag+1; index<self.myViews.count; index++){
UIView *view = [self.myViews objectAtIndex:index];
view.center = CGPointMake(view.center.x,view.center.y-viewToDelete.frame.size.height);
}
}]; completion:^(BOOL finished) {
[view removeFromSuperview];
}];

[self.myViews removeObjectAtIndex:viewToDelete.tag];
for (NSInteger index=0; index<self.myVies.count; index++){
UIView *view = [self.myViews objectAtIndex:index];
view.tag = index;
}

}

最佳答案

问题出在动画 block

您应该知道动画 block 是异步处理的,因此您最后的代码可能会在动画过程中被调用,并在动画 block 内的迭代循环中造成困惑。你应该搬家

[self.myViews removeObjectAtIndex:viewToDelete.tag];
for (NSInteger index=0; index<self.myVies.count; index++){
UIView *view = [self.myViews objectAtIndex:index];
view.tag = index;
}

到完成 block

关于ios - 奇怪的索引越界异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15247787/

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