我的申请有UITableView
。我正在使用具有标签和UIImage
的自定义单元格。它适用于正常滚动。但如果我长时间滚动它,那么图像就会消失。并且有error = 24 (to many open files) in console
。
来自Google,我得到的不是使用UIImage imageNamed
,而是使用initWithContentOfFile
。但这不起作用。请帮忙。
修改添加用注释编写的代码:
这是用于将图像添加到单元格的代码:
UIImage *img =[[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"sms_icon" ofType:@"png"]]; [cell.img setImage:img]; [img release];
答案 0 :(得分:0)
方法(+ ImageNamed :)在系统缓存中查找具有指定名称的图像对象,并返回该对象(如果存在)。如果匹配的图像对象尚未在缓存中,则此方法从指定的文件加载图像数据,对其进行缓存,然后返回结果对象。
在运行iOS 4或更高版本的设备上,如果设备的屏幕比例为1.0,则行为相同。如果屏幕的比例为2.0,则此方法首先搜索具有相同文件名的图像文件,并附加@ 2x后缀。例如,如果文件名是按钮,则首先搜索按钮@ 2x。如果找到2x,则加载该图像并将返回的UIImage对象的scale属性设置为2.0。否则,它会加载未修改的文件名并将scale属性设置为1.0。 在iOS 4及更高版本中,如果文件是PNG格式,则无需指定.PNG文件扩展名。在iOS 4之前,您必须指定文件扩展名。如果您有一个只显示一次的图像文件并希望确保它不会被添加到系统的缓存中,您应该使用imageWithContentsOfFile:创建您的图像。 这会将您的一次性图片保留在系统图片缓存之外,从而可能会改善您应用的内存使用特性。