首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

imageNamed与dataWithContentOfFile加载图片的区别

1、使用imageNamed函数: [UIImage imageNamed:@"ImageName"]; 2、使用NSData方式加载: NSString *filePath = [[NSBundle...但是利 用imageNamed加载图像也有自己的优势。对于同一个图像系统只会把它Cache到内存一次,这对于图像的重复利用是非常有优势的。...例如:你需要在 一个TableView里重复加载同样一个图标,那么用imageNamed加载图像,系统会把那个图标Cache到内存,在Table里每次利用那个图 像的时候,只会把图片指针指向同一块内存。...这种情况使用imageNamed加载图像就会变得非常有效。 利用NSData方式加载时,图像会被系统以数据方式加载到程序。...当图片数量多时,效率会比imageNamed低,加载速度明显变慢。 无论用哪种方式加载图像,图像使用结束后,一定要记得显示释放内存。

47240
您找到你想要的搜索结果了吗?
是的
没有找到

实现iOS图片等资源文件的热更新化(二):自定义的动态 imageNamed

这篇文章,要解决的是,使用一个自定义的 imageNamed 函数来替代系统的 imageNamed 函数.内部逻辑,将贯穿对比论证 关于"合适"的图片的定义.对iOS加载图片的规则不是很熟悉的童鞋,可以着重看这篇...NSLog(@"加载后的图片尺寸:%@",[NSValue valueWithCGSize:self.sampleImageView.image.size]); 封装为类目(category),实现自定义的 imageNamed...此处实现了一个简单够用的类目方法,支持从指定bundle读取指定名字的图片: #import "UIImage+imageNamed_bundle_.h" @implementation UIImage...(imageNamed_bundle_) + (UIImage *)imageNamed:(NSString *)imgName bundle:(NSString *)bundleName {...bundle:@"main"]; self.sampleImageView.image = image; 也支持有层级结构的图片资源的读取呦: UIImage * image = [UIImage imageNamed

1.1K60

iOS开发——Debug CUICatalog: Invalid asset name supplied: (null)

log出了一个错误 CUICatalog:Invalid asset name supplied: (null), Google了一下在StackOverflow上各位大神说应该是[UIImage imageNamed...需要解决的问题是查找所有[UIImage imageNamed:]调用的时候, 找到name是nil的地方, 但是整个项目一搜 imageNamed 显示 267 results in 117 files...一开始想到的是用Method Swizzle来修改[UIImage imageNamed:]的实现, 在name为nil的时候用断言, 查看调用栈. 但是想想写了debug之后还得删掉, 比较麻烦....右键选择Breakpoint选择 Edit Breakpoint , 在Symbol填入[UIImage imageNamed:] , 在Condition填入 [(NSString *)$arg3 length...打开Debug Navigator观察调用栈, 最顶部的一定是[UIImage imageNamed:], 点击调用栈下一条, 能够看到有调用到imageNamed的代码, 就是name为nil的地方.

2.8K30

iOS生成的对象释放时机

如果使用imageNamed这个方法加载一些比较大的资源文件就容易崩溃,从而引发了imageNamed生成的对象什么时候释放?...使用imageNamed这个方法生成的UIImage对象,会在应用的bundle中寻找图片,如果找到,则Cache到系统缓存中,作为内存的cache,而程序员是无法操作cache的,只能由系统自动处理,...由此看来[UIImage imageNamed:]只适合与UI界面中小的贴图的读取,而一些比较大的资源文件应该尽量避免使用这个接口[UIImage imageWithContentsOfFile]解决掉这个问题...for (int i = 0; i < 1000; i++) { UIImage* image = [UIImage imageNamed:@"some_image"]; // 对 image...为了解决这个问题,可以改成这样: for (int i = 0; i < 1000; i++) { @autoreleasepool { UIImage* image = [UIImage imageNamed

1.3K20

IOS 列表性能优化-图片解码性能优化

imageName = [NSString stringWithFormat:@"backImage%ld",(long)index]; //UIImage *image = [UIImage imageNamed...一种是: UIImage imageNamed:imageName 一种是: UIImage imageWithContentsOfFile:path 后面我再解释为什么需要对比这两种加载方式,...1>使用UIImage imageWithContentsOfFile:path image.png 2>使用UIImage imageNamed:imageName image.png 两种方式都实际滑动一分钟..., 可以清晰的看到,两种加载方式一开始都帧数很低,但是使用imageNamed: 的很快帧数就恢复到60帧,但是使用imageWithContentsOfFile:会一直卡顿,那是因为使用imageNamed...再来解释我们使用的两种加载方式,使用 imageWithContentsOfFile: 实际上是模拟网络下载图片到本地后,再从本地加载展示图片的过程,imageNamed:方式则是模拟从Assets.xcassets

1.8K00

IOS 图片解码性能优化

imageName = [NSString stringWithFormat:@"backImage%ld",(long)index]; //UIImage *image = [UIImage imageNamed...一种是: UIImage imageNamed:imageName 一种是: UIImage imageWithContentsOfFile:path 后面我再解释为什么需要对比这两种加载方式,...1>使用UIImage imageWithContentsOfFile:path image.png 2>使用UIImage imageNamed:imageName image.png 两种方式都实际滑动一分钟..., 可以清晰的看到,两种加载方式一开始都帧数很低,但是使用imageNamed: 的很快帧数就恢复到60帧,但是使用imageWithContentsOfFile:会一直卡顿,那是因为使用imageNamed...再来解释我们使用的两种加载方式,使用 imageWithContentsOfFile: 实际上是模拟网络下载图片到本地后,再从本地加载展示图片的过程,imageNamed:方式则是模拟从Assets.xcassets

67240

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券