1

好吧,內存管理讓我發瘋!加載多個沒有內存警告的本地映像

這裏是我的問題:

我有n引用圖像的plist中。 我只是試圖做的是抓住每個孩子,並將其加載到UIImageView,它被添加到啓用分頁的UIScrollView。

我的問題:

  • 我有n個圖像。可能只有3個,但可能是60個或更多。
  • 每張圖片都有相當大的分辨率(1152x1536),因爲它是可縮放的。

我讀到CATiledLayer,看到PhotoScroller樣品,但我想避免使用CATiledLayer因爲它創造了一個淡入同時顯示圖像的作品,在我的項目,效果不適合。

我只是想聽聽你的意見,你通常如何解決這類任務?

我會離開這裏一塊我的代碼:

UIImage * image; 
UIImageView * imageview; 

for (int i = 0; i < [data count]; i++) 
{ 
    image = [[UIImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@/%@", 
                [[NSBundle mainBundle] bundlePath], 
                [[data objectAtIndex:i] objectForKey:@"content"]]]; 

    [content addObject:image]; 

    imageview = [[UIImageView alloc] initWithImage: [content objectAtIndex:i] ]; 
    [imageview setTag:i+10]; 
    imageview.frame = CGRectMake(1024 * i, 0, 1024, 768); 

    [scroll addSubview: imageview]; 

    [imageview release]; 
    [image release]; 
} 

[scroll setContentSize:CGSizeMake(1024*[data count], 768)]; 

此代碼使應用程序收到內存警告,當我嘗試加載例如60張圖片。

我想你明白了吧?

有什麼建議嗎?

感謝您的幫助提前!

回答

3

如果您想避免內存問題,則不應一次加載它們,只在需要時加載它們。要做到這一點,你可以按照蘋果提供的例子,here

基本上,你所做的只是加載三個圖像:現在顯示的圖像和放置在右側和左側的圖像。然後,當您滾動時,讓我們說到右側,您將刪除之前位於左側的圖像,並在右側放置一個新圖像。

+0

真的非常感謝男士,我會試一試,稍後再回來告訴你我做了什麼! – 2012-02-14 11:15:13