0

約 50 枚の画像を表示するアプリケーションがあり、30 枚目の画像に達すると、メモリの問題によりアプリケーションがクラッシュします。私が知っているすべての方法を試しましたが、それでも問題は解決しません。だから私を助けてください。

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"]]];  `
4

3 に答える 3

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);
于 2012-08-03T12:31:18.430 に答える
0

50 枚の画像をメモリにロードしようとしていますが、問題が発生することはないと思いますか? ファイルサイズはどれくらいですか?

画像が必要/表示されたときに画像をロードすることをお勧めします。画像の情報(名前、サイズなど)から実際の画像を分割して、それらをシステムにロードしてみてください。代わりに、いくつかのプレースホルダーを表示してください。次に、特定の画像を表示するときに、実際の画像をメモリにロードして表示します。

于 2012-08-03T11:42:42.347 に答える
0

一度に多くの画像をロードすることはできません。十分なメモリがありません。

  1. 表示しているものだけをロードする
  2. 画像を必要以上に大きくしないでください (何らかのプレビューが必要な場合は、小さなサムネイルを使用してください)。
  3. imageNamed: を使用しないでください。画像がキャッシュされ、RAM が消費されます。代わりに imageWithFile: を使用してください。
于 2012-08-03T12:53:50.277 に答える