本文转载至 http://zhuhaibobb.blog.163.com/blog/static/2744006720124191633375/

这几天做了个APP打开20份钟左右就强制退出了,退出的地方不定,一只找不到问题的所在;最后只好真机调试;发现都在“[UIImage imageNamed:@"xxx.png"];”的地方出错,错误信息是“[UIImage _isCached]: message sent to deallocated instance”,经查阅资料发现是imageNamed的方式加载时,系 统会把图像Cache到内存。如果图像比较大,或者图像比较多,用这种方式会消耗很大的内存,而且释放图像的内存是一件相对来说比较麻烦的事情。例如:如 果利用imageNamed的方式加载图像到一个动态数组NSMutableArray,然后将将数组赋予一个UIView的对象的 animationImages进行逐帧动画,那么这将会很有可能造成内存泄露。并且释放图像所占据的内存也不会那么简单。简单说就是我用了太多的imageNamed造成内存泄露。

为了解决以上问题只好把[UIImage imageNamed:@"xxx.png"]改成代码如下:

[cpp] view plaincopy
  1. NSData *image = [NSData dataWithContentsOfFile:filePath];
  2. [UIImage imageWithData:image];

改完后imageNamed造成的内存泄露问题是没有了,但新的问题又来了,iPhone4的retina高分辨率不能正确加载@2x形式图片,解决这一问题代码如下。

[cpp] view plaincopy
  1. if([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0) {
  2. [UIImage initWithCGImage:[[UIImage imageWithData:[NSData dataWithContentsOfFile:@"xxx@2x.png"]] CGImage] scale:2.0 orientation:UIImageOrientationUp];
  3. } else {
  4. [UIImage imageWithContentsOfFile:@"xxx.png"];
  5. }

[UIImage _isCached]: message sent to deallocated instance相关推荐

  1. message sent to deallocated instance 0x154eec600

    在准备提交新的应用时,发现地图在不停切换到导航的时候,会出现很大概率的闪退.后经我们通宵的寻找终于找到原因是因为野指针.我是利用僵尸对象来实现监控每次生成对象的dealloc,出现这原因就是对象提前释 ...

  2. : EXC_BAD_ACCESS (code=EXC_I386_GPFLT)[r retain]: message sent to deallocated instance

    从一个页面退出的时候 遇到如图所示一个崩溃 遇到这种 EXC_BAD_ACCESS崩溃,首先想到野指针异常 然后 使用僵尸断点调试 如图 选中zombie objects ,开启僵尸断点调试 然后进行 ...

  3. [CALayer release]: message sent to deallocated instance

    遇到此问题时,查看以下类的dealloc方法中是否有过度释放. 可以在release前先判断以下对象是否还存在. -(void)dealloc { if (!m_tableView) [m_table ...

  4. [****ViewController scrollViewDidScroll:]: message sent to deallocated instance 0x12d6c22f0

    因为项目需要一个导航栏透明过渡效果,因此写了一个方法,过了好多天才发现这个bug,当滑动页面,导航栏处于半透明状态,这时点击返回(pop回上一页面),程序崩溃,报了这么个信息,Google后说是向因为 ...

  5. iPhone开发过程中调试多次Release问题 message sent to deallocated

    初级:第一步   为程序添加符号断点 malloc_error_break  方法如下. 目标效果:让程序崩溃时跳转到出错到那一行.但是往往达不到这个效果.不行就继续往下看. At times, wh ...

  6. 关于内存管理-提前释放的问题

    最近接受了一个项目,代码构造是很好的,但是还是使用mrc的管理方法,这次又算让我学习了一次内存管理,遇到内存释放crash的问题,搜了一篇文章,不妨使用下面的方法,可以有一个很好地定位. 在XCode ...

  7. Xcode开发技巧——调试

    断点(Breakpoint)断点是调试中非常重要的一个手段.由于在执行到某些代码前需要执行许多其它代码,不可能用单步跟踪一条一条执行过来,这时只要在需要暂停的地方设置一个断点,然后让程序运行,当执行到 ...

  8. iOS crash 问题分析汇总

    在这里插入图片描述 iOS crash 问题分析 iOS crash 常用分析工具 IOS 崩溃日志 iOS crash 原因分析 1.调用悬浮指针 2.数组越界访问 3.调用了未实现的方法 4.调用 ...

  9. iphone开发收藏

    IPhone之自定义弹出窗口 http://blog.sina.com.cn/s/blog_4adf31ea0100nw42.html 多个UIAlertView的使用 http://heidianf ...

  10. # iOS基础 # iOS面试题一

    如果你不知道你接下来需要补充学习哪一部分知识,做点面试题吧. 基础部分 1.线程和进程有什么区别 进程是一个程序执行的实例,是资源分配的最小单位线程是进程中的一个实例,是操作系统可以识别的最小执行和调 ...

最新文章

  1. php邮件加密,怎样对邮件正文分段加密及解密解决思路
  2. 听说最近你读过不少书
  3. 一口气说出 6种 延时队列的实现方案,大厂offer稳稳的
  4. 判断非负整数是否是3的倍数_六年级小升初数学总复习专题(2-1)因数与倍数...
  5. Nmon 性能:分析 AIX 和 Linux 性能的免费工具
  6. 使用 PHP 7 给 Web 应用加速
  7. Java面向对象(21)--内部类
  8. 蔡司三坐标_蔡司三坐标测针的安装指南
  9. Cmder - 在右键菜单添加Cmder Here
  10. 消息传递的图神经网络
  11. matlab 请验证三角等式,[转载]matlab
  12. 从SourceForge上获取CVS管理的开源代码
  13. ajax js java省市三级联动菜单,javaweb--json--ajax--mysql实现省市区三级联动(附三级联动数据库)(示例代码)...
  14. 云计算技术与应用 - 知识点
  15. windows系统无法保存文件的解决方案
  16. Python人工智能之图片转文字识别
  17. Qt编写可视化大屏电子看板系统1-布局方案
  18. 通过python requests第三方库抓取淘宝商品名称和信息价格
  19. MongoDB之增删改查全套语法锦囊⭐️【初学者福利】
  20. 盘点安卓绿色联盟2018全年技术沙龙干货分享

热门文章

  1. mysql 5.6.11.tar.gz_mysql5.6.11.tar.gz安装
  2. python find next_bitset中_Find_first()与_Find_next()函数
  3. python-gui-pyqt5的使用方法-8--实际案例可参考使用
  4. linux设置系统时间
  5. tomcat启动后连接数据库连接慢的问题
  6. 可以悬浮在屏幕的搜题软件_悬浮窗搜题app下载-悬浮窗搜题预约 安卓版v1.0.0-PC6安卓网...
  7. docker 卸载镜像_docker删除所有容器和镜像命令
  8. 【Java面试题系列】:Java中final finally finalize的区别
  9. 渔村小厂,如何成长为5G霸王
  10. 科技行业组织称英国在脱欧后可能成为“数据避风港”