我有应用程序,其中我显示约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"]]]; `
答案 0 :(得分:0)
您是否尝试将50张图像加载到内存中并且不会出现问题? 它们的大小有多大?
最好只在需要/显示时加载图像。尝试从图像信息(名称,大小,其他)中分割实际图像并将其加载到您的系统中,可能会显示一些占位符。 然后,当您显示特定图像时,将实际图像加载到您的记忆中并显示它。
答案 1 :(得分: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);
答案 2 :(得分:0)
您无法一次加载那么多图片。内存不足。