我在我的应用程序中使用UIScrollView
加载图像数量(超过 200 张图像)。
我从磁盘加载图像,然后添加到UIScrollView
中。我收到 Xcode 5 错误消息"由于内存错误而终止",并且应用程序意外终止。但并非每次都偶尔发生。
我仍然完全不确定这是内存问题。但是我没有找到内存问题的代码原因。
即使我已经通过仪器工具检查了内存泄漏问题,也没有内存泄漏。
由于对象创建的效率和耗时,我在自定义ACReuseQueue
的帮助下为像UITableView
这样的UIScrollView
创建了自定义的可重用UIView
类
我已经在scrollViewDidScroll
内实现了排队和取消排队的概念:
要将图像添加到UIScrollView
中:习惯于以下代码
-(void)imageAdd:(ALAsset *)item
{
__block ImageControl *imageControl;
imageControl = (ImageControl*)[[ACReuseQueue defaultQueue] dequeueReusableObjectWithIdentifier:@"ImageControl"];
[imageControl setAlAsset:item];
[imageControl setDuration:1.0];
[imageControl setIsCopy:NO];
[self.galleryView addItem:imageControl];
[imageControl release];
}
下面的代码用于当用户滚动滚动视图时
-(void)scrollViewDidScroll:(UIScrollView*)scrollView
{
for (ImageControl *imageControl in self.galleryView.items)
{
if (CGRectIntersectsRect(imageControl.frame, self.galleryView.bounds))
{
imageControl = (ImageControl*)[[ACReuseQueue defaultQueue] dequeueReusableObjectWithIdentifier:@"ImageControl"];
[self.galleryView addItem:imageControl];
}
else
{
[imageControl removeFromSuperview];
[[ACReuseQueue defaultQueue] enqueueReusableObject:imageControl];
}
}
}
尽管如此,我还是没有像UITableView
那样实现可重用UIScrollView
不要同时加载所有图像。无论如何,大多数都不可见。
使用表格视图可能会使您的生活更轻松,并且是仅加载所需图像的最快方法。
如果要使用普通滚动视图,则需要实现 scrollViewDidScroll:
delegate 方法,并在用户滚动视图时使用它来添加和删除子视图。