一、使用instrument工具查看有无内存泄露,查找僵尸对象
二、自定义内存检测工具
可在baseViewController里面重写dealloc方法,将释放的对象打印出来,如果pop之后没打印,说明这个控制器存在内存泄露,也可以利用runtime+分类的方式交换dealloc方法,打印出释放的对象。
三、资源文件的优化
资源文件优化主要从格式和文件大小方面入手,本地图片优先选择png格式,XCODE中集成了第三方PNG优化工具,在设置;设置将其打开,它可以在编译时对PNG格式文件进行优化和压缩,如果图片资源来源于网络,最好使用JPEG格式,因为它较小。对于本地图片,如果应用中经常要使用,可以采用imageName:方式加载,因为这个方法会在内存中建立缓存,直到应用停止才会清除,如果是不常用的,推荐使用initWithContentsofFile:创建。
音频文件在本地资源的情况下,应用于背景中的音频推荐采用AIFC格式(压缩文件),应用于特效时推荐使用CAFF格式(无压缩),如果资源来源于网络最好使用MP3格式。
四、延迟加载
比如使用pageControl来分页滑动图片,可先加载第一张显示的图片,后面触发滚动时再去加载之后的图片,不要一次性加载完所有图片,万一用户不滑动岂不是浪费内存
五、还有一些耗电优化
1、尽可能少用定时器
2、如果多次请求的结果相同,尽量使用缓存
3、定位优化,如定位完成后,自动让定位硬件断电;如果不是导航的应用,尽量不要实时更新位置,定位完毕就关掉定位服务;尽量降低定位精度,精度越高,硬件模块功耗越大;
六、尽量少用KVC