我们如何关闭 NSFileManager?
Posted
技术标签:
【中文标题】我们如何关闭 NSFileManager?【英文标题】:How Can We Close NSFileManager? 【发布时间】:2013-04-29 13:27:30 【问题描述】:在我的 ios 应用程序中,我使用了很多图片(大约一千张)来显示有关产品的信息。然后我在运行时遇到这样的错误;
ImageIO:CGImageRead_mapData“打开”失败 error = 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];
在这个循环中,我创建了数千个按钮。但我看不到一些按钮和一些 imageview 的图像。例如,“背景”和“按钮”图像视图和按钮。有两张截图,那是必须的和必须的。
【问题讨论】:
您是如何显示图像或打开这些图像的? 我更新了我的问题。 你在哪里更新 imageName 变量: NSString *filePath = [documentsPath stringByAppendingPathComponent:imageName];似乎你总是得到错误的文件路径......我猜你忘了从 db 中获取它 不是这样,我再次更新我的问题。 在我看来,您正在尝试重新发明***。如果您的应用程序是 iOS 6 和更新版本,请查看 Apple 的 UICollectionView。如果您要支持较旧的 iOS 版本,请查看开源 AQGridView。这种情况下的模式不是预先填充所有按钮,而是只设置正在显示的按钮,就像 UITableView 一样。 【参考方案1】:使用下一个语法创建图像可能会更好:
[UIImage imageWithContentsOfFile:filePath];
【讨论】:
当我的应用程序正在运行并且我使用情节提要将图像设置为按钮时,我的按钮图像没有消失,所以我没有使用这个代码块 你是什么意思?请在您的问题中详细说明您在做什么 我正在使用情节提要创建按钮和图像视图。我正在为此按钮和图像视图设置一些图像,然后出现此错误,我无法在我的按钮和图像视图上看到图像 >>为此按钮和图像视图设置一些图像 - 你是怎么做的?你什么时候使用 NSFileManager? [UIImage imageWithContentsOfFile:] - 创建图像,而不是视图。 我更新了我的问题,希望你现在能明白我在说什么。以上是关于我们如何关闭 NSFileManager?的主要内容,如果未能解决你的问题,请参考以下文章