2010-08-12 121 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