2010-08-12 134 views
0

我需要所有人的澄清,那就是我正在实现一个iPad应用程序。在那我试图下载和动画的图像。图像数量应该超过100,000.我用来下载和添加到视图中的代码如下。内存管理

UIImageView* imageView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0,100,100)]; 
NSData *receivedData=nil; 
receivedData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://path/prudently/iphone/image_s/e545afbf-4e3e-442e-92f9-a7891fc3ea9f/test.png"]]; 
imageView.image = [[UIImage alloc] initWithData:receivedData] ; 
[subView addSubview:imageView]; 
[imageView release]; 

但是,我成功地将超过8000的图像添加到我的子视图后,我收到异常。我在从URL获取数据时遇到了异常。还有一件事我不释放子视图,因为一旦我下载它们,我需要动画子视图。

请给我你的suggessions

谢谢 Sekhar Bethalam。

+0

你有什么异常?您可能已经耗尽内存,在这种情况下,异常可能会在'+ [NSData dataWithContentsOfURL:]'或其调用的方法之一中。 – David 2010-08-12 12:04:55

回答

0

您可以将URL,图像或其他内容写入缓存文件,并划分一些页面以使图像具有动画效果... 当用户按下页面链接时,应用程序会读取此页面的图像并为其设置动画效果,用户不使用的页面不需要显示。

1

对于桌面应用程序来说,100,000个图像似乎很多,更不用说像iPhone这样的智能手机了。是否没有另外一种方法可以解决这个问题,并不需要如此高的资源数量?

+0

@David: 嗨,我收到了本节目收到的信号:“EXC_BAD_ACCESS”。 数据格式化程序暂时不可用,将在“继续”后重新尝试。 (未知错误加载共享库“/Developer/usr/lib/libXcodeDebuggerSupport.dylib”) – ChandraSekhar 2010-08-12 12:59:18

0

要完成此操作,唯一的方法是根据屏幕上的需要动态创建和销毁UIImageView。由于设备上有限的内存,iPhone/iPad/iAnything无法做你想做的事。

+0

但我有这些问题,我不能销毁它们,因为子视图应该是动画直到应用程序关闭。这是要求。如果我这样做,正如你所建议的我不能给他们制作动画。这就是问题 – ChandraSekhar 2010-08-12 13:16:14

+0

我不明白在屏幕上动画显示100,000个100x100像素对象的价值,最多只能显示(iPad),每个图像70个实例不重叠。 – Aaron 2010-08-12 14:03:46