2012-08-03 129 views
0

我有應用程序,其中我顯示大約50圖像,當我達到第30圖像我的應用程序崩潰,由於內存問題。我嘗試了所有我知道的方法,但仍然沒有解決問題。所以請幫助我。應用程序崩潰由於uiimageview

NSLog(@"%d",nn); 
nn ++; 
NSLog(@"%d",nn); 
NSMutableArray* arr2 = [[NSMutableArray alloc]init]; 
arr2 = [Database executeQuery:@"select * from cartoon"]; 
if (nn == [arr2 count]) 
{ 
    nn = 0; 
} 
NSMutableDictionary* dict1 = [arr2 objectAtIndex:nn]; 
NSLog(@"%@",dict1);    
NSString * both_name = [NSString string]; 
both_name = [both_name stringByAppendingString:[dict1 objectForKey:@"mainpk"]]; 
both_name = [both_name stringByAppendingFormat:@". "]; 
both_name = [both_name stringByAppendingString:[dict1 objectForKey:@"name"]]; 
NSLog(@"both %@",both_name); 
label1.text = both_name; 
imgv.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.jpg",[dict1 objectForKey:@"name"]]]; ` 
+0

這段代碼與這個問題有什麼關係?除顯而易見外(即:如果30張圖像不適合記憶,不要加載30張圖像),您尋找什麼樣的幫助? – 2012-08-03 11:40:11

+0

檢查我的答案:http://stackoverflow.com/questions/11758454/need-to-create-photo-slider-using-photo-library-photos-in-iphone/11760226#11760226可能會幫助你。 – Iducool 2012-08-03 11:57:42

+0

檢查我的答案:[http://stackoverflow.com/a/11791089/1132951](http://stackoverflow.com/a/11791089/1132951)這可能會有所幫助 – 2012-08-03 12:06:30

回答

0

您正在嘗試將50張圖像加載到內存中,而不是期望遇到麻煩? 他們的文件大小有多大?

最好是在需要/顯示時加載圖像。嘗試從圖像信息(名稱,大小,其他任何地方)分割實際圖像並將其加載到系統中,也許會顯示一些佔位符。 然後,當您顯示特定圖像時,將實際圖像加載到內存中並顯示。

0

代碼[dict1 objectForKey:@「mainpk」]不返回字符串。

錯誤在你的代碼:

在下面的行,你是沒有密鑰創建的字典。

NSMutableDictionary* dict1 = [arr2 objectAtIndex:nn]; 

然後通過無效鍵訪問字符串。

[dict1 objectForKey:@"mainpk"]]; 

追加無效值的字符串

[both_name stringByAppendingString:[dict1 objectForKey:@"mainpk"]]; 

這會崩潰:)

這將工作:

NSMutableDictionary* dict1 = [[ NSMutableDictionary alloc ] initWithCapacity: 0]; 

[dict1 setObject: @"test" forKey: @"mainpk"]; 
[dict1 setObject: @"test1" forKey: @"name"];  

NSString * both_name = [NSString string]; 
both_name = [both_name stringByAppendingString:[dict1 objectForKey:@"mainpk"]]; 
both_name = [both_name stringByAppendingFormat:@". "]; 
both_name = [both_name stringByAppendingString:[dict1 objectForKey:@"name"]]; 
NSLog(@"both %@",both_name); 
0

您不能加載,很多圖片一次。沒有足夠的內存。

  1. 只加載你是顯示
  2. 不要讓你的圖像的任何比你需要
  3. 不要使用imageNamed(如果你需要某種形式的預覽使用小縮略圖)大的:,它緩存圖像並吃掉內存。改用imageWithFile:。
相關問題