当前位置: 代码迷 >> Iphone >> arc下内存泄漏的解决小技能
  详细解决方案

arc下内存泄漏的解决小技能

热度:91   发布时间:2016-04-25 05:36:37.0
arc下内存泄漏的解决小技巧

一定要注意,我们运行app时,一定要关心内存的使用,尽量不要超过20M,即使有很多图片要显示也绝对不能超过30M。所以运行自己开发的app时多关心内存的使用是个很好的习惯。

对于性能,内存的优化,这个涉及的就太多了。现在先讲讲几个最基本常见的内存泄露下的解决方法。

 

1. instruments

instrument可以报出不少内存泄露的错误,方法:http://www.cocoachina.com/ios/20141203/10519.html,很容易操作。

不过它最大的功能还是可以自己看出哪里内存用了多,从而进行优化。

2. arc的问题

ARC does not manage C-types, of which CGImage may be considered. You must release the ref manually when you are finished with CGImageRelease(image);

这是stackoverflow别人的回答,就是说在arc模式下,C-types的对象需要手动来进行释放

 

arc还会有循环引用等问题,导致对象不能被释放,有个小技巧来处理,可以写下-(void)dealloc设置断点,如果页面跳转没有执行它,那么证明你犯错了,自动计数没有为0,不会释放的,内存会一直增加,需要去找错。

3. image的一些建议

很多图片要加载,不要用队列存储image,要么image存在沙盒里,队列里存地址,要么队列存储缩略图,点击的时候再放大。

最不可取的方法就是本来是一个清晰的大图,可能需要缩小,就直接imageView改变尺寸,这个非常耗内存。

2楼IOS小菜
good
1楼IOS小菜
以前遇到过一个问题,我用tableView来加载图片,图片资源都是超清图片,即使cell重用也没问题,也会造成程序内存激增。最后的解决办法是:列表的图片采用缩略图,10kb以下的,点击了才加载高清图。
Re: steven_fukua
@IOS小菜,good,最近在做九宫格图片上传,内存太大了,也是用的你的方法
  相关解决方案