gpt4 book ai didi

objective-c - 在这里过度释放?

转载 作者:搜寻专家 更新时间:2023-10-30 20:02:03 27 4
gpt4 key购买 nike

在我的应用程序的临时测试版中,我在某些设备上获得了 EXC_BAD_ACCESS,请参见此处: Help debugging iPhone app - EXC_BAD_ACCESS

我已经设法使用 atos -arch armv6 -o myapp.app/myapp 0x000037a6 在终端中追踪导致此问题的方法,它引导我找到这段代码:

for (UIView *view in scrollView.subviews) {
[view removeFromSuperview];
}

我怀疑该应用程序收到了内存访问警告,并释放了它的子项 scrollview 或 UIImageViews,因此当我使用上述方法时,它会遇到错误(并崩溃),因为它过度释放了 View 。

我的问题是,我怎样才能使它安全,以便它只在尚未发布时才发布?

最佳答案

您在迭代数组时正在修改它。它很微妙,但是因为 removeFromSuperview 将它从 subview 列表中删除,所以您正在更改数组。将您的代码更改为此,

NSArray *subviews = [scrollView.subviews copy];
for (UIView *view in subviews) {
[view removeFromSuperview];
}
[subviews release];

你应该没问题。

关于objective-c - 在这里过度释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2024654/

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