Iphone 将UIImageView加载到UIScrollView和性能

Iphone 将UIImageView加载到UIScrollView和性能,iphone,cocoa-touch,uitableview,uiscrollview,Iphone,Cocoa Touch,Uitableview,Uiscrollview,我有一个UIView和三个UIScrollView。我用已经分配了图像的自定义UIImageView加载每个视图。自定义UIImageView很简单,只引入了一些新属性,允许在ScrollView中跟踪ImageView 图像从磁盘加载速度非常快。下面的代码执行速度非常快,但我必须在每个imageview中等待大约6秒钟,然后才能在scrollview中显示任何内容。如果我尝试加载所有图像,应用程序将崩溃 Program received signal: “0”. 通常是内存不足错误。这些照

我有一个UIView和三个UIScrollView。我用已经分配了图像的自定义UIImageView加载每个视图。自定义UIImageView很简单,只引入了一些新属性,允许在ScrollView中跟踪ImageView

图像从磁盘加载速度非常快。下面的代码执行速度非常快,但我必须在每个imageview中等待大约6秒钟,然后才能在scrollview中显示任何内容。如果我尝试加载所有图像,应用程序将崩溃

Program received signal:  “0”.
通常是内存不足错误。这些照片来自手机的照片库。看看模拟器中使用的图像,它们的范围从213KB到401KB。我显然做错了什么,但不确定是什么

我可能会使用tableview,因为它确实允许分页,但我不确定tableview是否有更好的性能。我认为scrollview的问题在于,必须在scrollview中同时加载所有ImageView,而不是延迟加载。既然ImageView已经加载到(单例)字典中,为什么要花这么长时间才能加载到scrollview中?所有的UI都是在IB中完成的

总的来说,有更好的方法吗

以下是将ImageView加载到ScrollView中的代码:

- (void) addImageViewsToScrollView:(NSMutableDictionary*)imageViews scrollView:(UIScrollView*)scrollView
{

int widthRunningTotal = 0;
int count = 0;

for(NSString *s in [imageViews allKeys]){
    CustomImageView *myImageView = [imageViews valueForKey:s];
    myImageView.imageName = s;
    myImageView.imageId = count;
    myImageView.frame = CGRectMake(widthRunningTotal, 0, 160, 100);
    myImageView.contentMode = UIViewContentModeScaleAspectFit;
    [scrollView addSubview:myImageView];
    widthRunningTotal += 160;
    count++;
}
scrollView.contentSize = CGSizeMake(widthRunningTotal, 100);
}

这段代码多久被调用一次?我看不到任何地方可以删除现有的子视图,因此,如果这种情况发生多次,最终将得到大量的子视图。

每次加载此视图时都会出现这种情况。用户可以从另一个视图添加新图像,因此我再次加载所有ImageView,从而允许显示新图像。我应该在退出视图时删除ImageView吗?但是,第一次加载此视图时会出现内存问题。不,如果每次实例化视图时调用它的次数不超过一次,则可以。我试着只加载一个视图,看看它能做什么。我有16个scrollview1的图像。我已禁用加载其他两个滚动视图。等待图像出现30秒,应用程序将收到内存警告。我滚动第一个图像,得到另一个内存警告。滚动第二幅图像会导致出现旋转动画,应用程序会因“程序接收信号:'0'”而崩溃。这仅在设备上。模拟器速度很快。