iOS 性能优化的一些方法

一、使用instrument工具查看有无内存泄露,查找僵尸对象

二、自定义内存检测工具

       可在baseViewController里面重写dealloc方法,将释放的对象打印出来,如果pop之后没打印,说明这个控制器存在内存泄露,也可以利用runtime+分类的方式交换dealloc方法,打印出释放的对象。

三、资源文件的优化

       资源文件优化主要从格式和文件大小方面入手,本地图片优先选择png格式,XCODE中集成了第三方PNG优化工具,在设置;设置将其打开,它可以在编译时对PNG格式文件进行优化和压缩,如果图片资源来源于网络,最好使用JPEG格式,因为它较小。对于本地图片,如果应用中经常要使用,可以采用imageName:方式加载,因为这个方法会在内存中建立缓存,直到应用停止才会清除,如果是不常用的,推荐使用initWithContentsofFile:创建。

      音频文件在本地资源的情况下,应用于背景中的音频推荐采用AIFC格式(压缩文件),应用于特效时推荐使用CAFF格式(无压缩),如果资源来源于网络最好使用MP3格式。

四、延迟加载

       比如使用pageControl来分页滑动图片,可先加载第一张显示的图片,后面触发滚动时再去加载之后的图片,不要一次性加载完所有图片,万一用户不滑动岂不是浪费内存,还有scrollerView上有很多view,可以不要一次性创建所有的subViews,当需要时才创建,也可以利用tableView的重用思想,将它们放进一个可重用的队列中。

五、还有一些耗电优化

       1、尽可能少用定时器

       2、如果多次请求的结果相同,尽量使用缓存

       3、定位优化,如定位完成后,自动让定位硬件断电;如果不是导航的应用,尽量不要实时更新位置,定位完毕就关掉定位服务;尽量降低定位精度,精度越高,硬件模块功耗越大;

六、尽量少用KVC

七、酌情使用NSCache

       NSCache可用于缓存一些不大可能改变但是需,要经常读取的东西,比如服务器的响应、图片、tableView的行高,它与字典类似,不同的是系统回收内存的时候会自动删掉它的内存;

八、处理内存警告

       当收到内存警告是,移除对缓存、图片对象和其他一些可重建对象的强引用

九、重用开销大的对象,比如NSDateFormater、NSCalendar,通过添加属性到你的class里或者创建静态变量来实现

十、加速启动时间,尽量异步任务,避免过于庞大的XIB,因为它们是在主线程上加载的。所以尽量使用没有这个问题的storyBoard

posted @ 2019-05-24 10:48  小妮子的奋斗时代  阅读(471)  评论(0编辑  收藏  举报