私の iOS アプリケーションでは、製品に関する情報を表示するために大量の画像 (約 1000 個) を使用しています。次に、実行時にこのようなエラーが発生しました。
ImageIO: CGImageRead_mapData 'open' failed エラー = 24 (開いているファイルが多すぎます)
開いているファイルを閉じるにはどうすればよいですか?また、NSFileManager を使用しています。
ご回答ありがとうございます。
アップデート:
私のviewdidloadからのいくつかのコード、
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
NSString *imageName= [NSString stringWithUTF8String:(char*)sqlite3_column_text(compiledStatement, 2)];
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) {
image2 = [UIImage imageNamed:@"resimYok.jpeg"];//horoda
}else{
image2 = [UIImage imageWithData:pngData];
}
image2=[image2 imageByScalingAndCroppingForSize:CGSizeMake(175, 210)];
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];
UIImageView *background = [[UIImageView alloc]initWithFrame:CGRectMake(column*197+30, row*350, 175, 280)];
UIImage *blackBackGround = [UIImage imageNamed:@"BackImage.png"];
[background setImage:blackBackGround];
[scrollView addSubview:background];
[background release];
[blackBackGround release];
UIImage *sepeteEkleButtonImage = [UIImage imageNamed:@"sepeteEkleButtonImage.png"];
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;
[sepeteEkleButtonImage release];
}
このループでは、何千ものボタンを作成します。しかし、いくつかのボタンといくつかのイメージビューの画像を見ることができません。たとえば、「背景」と「ボタン」のイメージビューとボタン。2 つのスクリーンショットがあります。