最近仍旧再弄ios的优化,特别是针对老设备的优化问题。思来想去的,最终优化出一个自己认为内存不再泄漏的版本,不过呢,测试中仍旧在Ipad mini1上面出了问题。遂记下整个检测流程。
首先,在已经确认将缓存从app中移出去了,不过测试的版本仍旧存在问题:ipad mini1学习时间不能坚持。这个时候,我有选择性地屏蔽了部分代码。问题仍旧是存在的,屏蔽了加载图集的imageview,然后效果并不是积极转好。而是学习了一段时间,仍旧黑屏了。之所以要记录这个过程,是真的有在排查这类问题。当我看到xcode打印的memory warning,仍旧认为哪里有问题。事实上,在此之前,我也有考虑是音频的问题。在以前的很多次项目开发中,我并没有遇到音频的问题,但是到了Ipad mini1问题及其明显了。也对比了很多区别。发现到,播放的音频的确存在区别。
其次,在确认音频存在区别,这个过程需要的就是改善了。考虑到音频数量庞大,修改这个音频的样本率,的确不是最佳的选择。但是从安卓的情况看来,我们确实可以设置__audioFileIndicator这个值。
看到这里,窃以为将default值设置超过所有音频的最大样本率,当然由于音频数量庞大,而且也没有严格规范,所以这个值设定,只能参考某个上限。例如很多音频都是320kbs,那么这里的设置最大就应该是320000了,default和mp3的设置。然后及至看大这是安卓的实现时候,顿时觉得引擎里面真的是设置万千。针对安卓执行一种方案,到了apple就没有支持这种实现了。
于是继续去看源码实现,发现里面用到了preload,从字面意思自然是预加载。这里发现的问题,后文再讲。Apple端的实现,并没有安卓端的样本频率设置,导致所有的音频必须是96-128kbs。当然这是cocos引擎的建议。