手机交互设计网站,360直播无插件高清足球,徐州网站建设熊掌号,苏州建设工程材料信息价问题描述 图片资源放在Assets.xcassets中#xff0c;分别用UIImage的类方法imageNamed和imageWithContentsOfFile获取图片对象#xff0c;但发生奇怪的情况#xff0c;前者获取到图片对象#xff0c;后者结果为nil。代码如下#xff1a; 1.通过UIImage的类方法imageNamed:…问题描述 图片资源放在Assets.xcassets中分别用UIImage的类方法imageNamed和imageWithContentsOfFile获取图片对象但发生奇怪的情况前者获取到图片对象后者结果为nil。代码如下 1.通过UIImage的类方法imageNamed:可以获取到图片对象。 UIImage *imge [UIImage imageNamed:test.jpg]; 2.但通过UIImage的类方法imageWithContentsOfFile:得到img为nil //NSString *path [[NSBundle mainBundle] pathForResource:test ofType:jpg];
NSString *path [[NSBundle mainBundle] pathForResource:test.jpg ofType:nil];
UIImage *imge [UIImage imageWithContentsOfFile:path]; 问题分析 其实UIImage创建对象有两种方法 imageNamed:创建的对象会缓存到系统内存中不会立即释放到内存。好处是再次加载使用这种方式会减少读取操作加快程序运行。缺点加载过多图片会占用大量内存空间。创建图片对象首先在缓存中查找是否有该对象有则直接取出对象没有则从bundle中查找图片资源有则创建对象并返回。bundle中也没有图片资源则返回nil。 imageWithContentsOfFile:mageWithContentsOfFile创建的对象不会缓存到系统内存中。好处是不产生缓存。缺点对于经常使用的小图片会频繁读取。imageNamed只需传文件名imageWithContentsOfFile需要传入文件全路径而文件全路径可以通过NSBundle得到。 注意 如果在项目中的Assets.xcassets蓝色文件夹 不可以NSBundle获得资源路径然后imageWithContentsOfFile加载可以imageNamed加载如果在项目中真实文件夹蓝色文件夹除Assets.xcassets 可以NSBundle获得资源路径然后imageWithContentsOfFile加载。注意要带文件夹路径例如[[NSBundle mainBundle]pathForResource:test.jpg ofType:nil inDirectory:image]不可以imageNamed加载如果在项目中虚拟文件夹黄色文件夹 可以NSBundle获得资源路径然后imageWithContentsOfFile加载可以imageNamed加载问题解决 只能imageNamed获取Assets.xcassets的图片资源转载于:https://www.cnblogs.com/Zev_Fung/p/5407642.html