2012-04-17 97 views
1

在我的應用程序中,我使用滾動視圖來顯示300圖像(400 kB)。 需要將近2分鐘,因此,當我上下滾動時,它不光滑。ScrollView太慢 - 內存管理問題?

我該如何解決這個問題?

注意:我已經注意到,在向下滾動到scrollview結束一次後,它變得平滑。 滾動問題只出現在第一次。

+0

你的問題與內存管理有什麼關係?你有沒有嘗試分析應用程序? – trojanfoe 2012-04-17 08:57:05

回答

0

嘗試在你的負載功能加入這個(您加載圖片)。如果您正在使用while或for循環加載圖像,請將此代碼添加到循環中。

NSURL *url=//here url for your image 
dispatch_queue_t currentQueue = dispatch_get_current_queue(); 
dispatch_queue_t dataConvertorQueue = dispatch_queue_create("Fetching images", NULL); 
dispatch_async(dataConvertorQueue, ^{ 
    NSData *data = [NSData dataWithContentsOfURL:url]; 
    dispatch_async(currentQueue, ^{ 
     //replace imageView with your imageView outlet 
     imageView.image = [[UIImage alloc] initWithData:data]]; 
    }); 
}); 
dispatch_release(dataConvertorQueue); 

此代碼可以幫助您從url中獲取並顯示圖像,並且它可以很好地與tableview一起使用。它可能不是你想要的,但它會給你一個關於如何去做的想法。希望它能幫助你。

0

請勿預先加載所有圖像。只需加載圖像以顯示此刻和下一張+最後一張照片。

據我瞭解,當加載/顯示滾動視圖時加載所有圖像。既然你有很多的圖像,它會更快,更節省內存,如果你只是加載/內存三張圖像。 這將是上一個/左側顯示的圖像,不可見 - 當前顯示的可見圖像和不可見的下一個/右側圖像。

因此,如果您移動/向左滑動,則基本上將滾動視圖向左移動並顯示已加載的右側圖像。在後臺您將加載下一個正確的圖像,而您將釋放最左側的圖像。

在任何時候,你只有最多4張圖片加載。

查看WWDC 2011的無限scrollview示例 - 會話104高級滾動視圖以獲取良好的視覺示例和示例代碼。

+0

你能解釋一下嗎?我愛慕理解得很好。 – yatanadam 2012-04-17 09:03:09