我是ios编程的新手,当我的应用程序运行时,我正在接受这些错误。我在我的应用程序中加载了950多张图片,我正在使用ARC。
ImageIO:CGImageRead_mapData'open' failed'/ Users / apple / Library / Application Support / iPhone Simulator / 6.1 / Applications / 16551664-4694-4742-85DC-2C3C0ADC5289 / demo.app / menu-24-20.png'错误= 24(打开的文件太多)
ImageIO:CGImageRead_mapData'open' failed'/ Users / apple / Library / Application Support / iPhone Simulator / 6.1 / Applications / 16551664-4694-4742-85DC-2C3C0ADC5289 / demo.app / menu-24-20.png'错误= 24(打开的文件太多)
ImageIO:CGImageRead_mapData'open' failed'/ Users / apple / Library / Application Support / iPhone Simulator / 6.1 / Applications / 16551664-4694-4742-85DC-2C3C0ADC5289 / demo.app / circle_green.png' 错误= 24(打开的文件太多)
ImageIO:CGImageRead_mapData'open' failed'/ Users / apple / Library / Application Support / iPhone Simulator / 6.1 / Applications / 16551664-4694-4742-85DC-2C3C0ADC5289 / demo.app / circle_green.png' 错误= 24(打开的文件太多)
ImageIO:CGImageRead_mapData'open' failed'/ Users / apple / Library / Application Support / iPhone Simulator / 6.1 / Applications / 16551664-4694-4742-85DC-2C3C0ADC5289 / demo.app / shopping_cart_1-512.png' 错误= 24(打开的文件太多)
ImageIO:CGImageRead_mapData'open' failed'/ Users / apple / Library / Application Support / iPhone Simulator / 6.1 / Applications / 16551664-4694-4742-85DC-2C3C0ADC5289 / demo.app / shopping_cart_1-512.png' 错误= 24(打开的文件太多)
此代码块是我的应用程序的一部分。
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
int UrunId = sqlite3_column_int(compiledStatement,0);
//NSString *urunNo= [NSString stringWithFormat:@"%i",UrunId];
UrunAdi = [NSString stringWithUTF8String:(char*)sqlite3_column_text(compiledStatement, 1)];
NSString *imageName= [NSString stringWithUTF8String:(char*)sqlite3_column_text(compiledStatement, 2)];
UIImageView *background = [[UIImageView alloc]initWithFrame:CGRectMake(column*197+30, row*350, 175, 280)];
NSString *filePathBackGround = [[NSBundle mainBundle] pathForResource:@"BackImage" ofType:@"png"];
NSData *myData = [NSData dataWithContentsOfFile:filePathBackGround];
UIImage *blackBackGround = [UIImage imageWithData:myData];
[background setImage:blackBackGround];
[scrollView addSubview:background];
NSString *filePathSepeteEkleButton = [[NSBundle mainBundle] pathForResource:@"sepeteEkleButtonImage" ofType:@"png"];
NSData *myDataButton = [NSData dataWithContentsOfFile:filePathSepeteEkleButton];
UIImage *sepeteEkleButtonImage = [UIImage imageWithData:myDataButton];
UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setFrame:CGRectMake(column*197+38 , row*350+8, 159, 45)];
[button setImage:sepeteEkleButtonImage forState:UIControlStateNormal];
[button addTarget:self
action:@selector(addToChart:)
forControlEvents:UIControlEventTouchUpInside];
button.tag = UrunId;
UILabel *buttonLabel=[[UILabel alloc]initWithFrame:CGRectMake(column*197+43,row*350+20,200,20)];
buttonLabel.textColor = [UIColor whiteColor];
buttonLabel.backgroundColor=[UIColor clearColor];
buttonLabel.text=UrunAdi;
[scrollView addSubview:button];
[scrollView addSubview:buttonLabel];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0]; //Get the docs directory
NSString *filePath = [documentsPath stringByAppendingPathComponent:imageName];
NSData *pngData = [NSData dataWithContentsOfFile:filePath];
if (pngData == nil) {
NSString *filePathResimYok= [[NSBundle mainBundle] pathForResource:@"resimYok" ofType:@"jpeg"];
NSData *myDataResimYok= [NSData dataWithContentsOfFile:filePathResimYok];
image2 = [UIImage imageWithData:myDataResimYok];//horoda
}else{
image2 = [UIImage imageWithData:pngData];
}
image2=[image2 imageByScalingAndCroppingForSize:CGSizeMake(175, 210)];
//UIImage *urunDetayImage = [UIImage imageNamed:image2];
UIButton * urunDetayButton = [UIButton buttonWithType:UIButtonTypeCustom];
[urunDetayButton setFrame:CGRectMake(column*197+38 , row*350+58, 159, 170)];
[urunDetayButton setImage:image2 forState:UIControlStateNormal];
[urunDetayButton addTarget:self
action:@selector(buttonClicked:)
forControlEvents:UIControlEventTouchUpInside];
urunDetayButton.tag = UrunId;
[scrollView addSubview:urunDetayButton];
UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(column*197+38,row*350+245,200,20)];
label.textColor = [UIColor whiteColor];
label.backgroundColor=[UIColor clearColor];
label.text=UrunAdi;
[scrollView addSubview:label];
我想修复3天。请帮帮我。感谢。
答案 0 :(得分:4)
据我所知,你的代码看起来很好,并且在模拟器(大量内存)中运行应该可以正常工作。一些建议:
1)使用dataWithContentsOfFile:options:error:
而不是dataWithContentsOfFile:
,使用NSDataReadingUncached选项(以减少系统上的内存压力),并测试返回值 - 如果没有记录错误并更新您的问题。< / p>
2)您始终可以将数据映像转储到NSCache对象中,如果系统需要内存,它将释放缓存项,您必须从文件系统重新读取映像。即使您一次只拉几张图像,也可以使用此技术。
3)您可以使用UIImage imageWithContentsOfFile:
而不是获取数据然后创建图像。在这种情况下,将UIImage本身放在缓存中,并使用其名称的密钥。
答案 1 :(得分:0)
从X-Code 10开始,Apple并未像以前那样动态删除所有NSCache实例。因此,作为开发人员,我们需要退出模拟器应用程序并运行构建,以使构建成功。