最近仍舊再弄ios的優(yōu)化菩鲜,特別是針對老設(shè)備的優(yōu)化問題。思來想去的惦积,最終優(yōu)化出一個自己認(rèn)為內(nèi)存不再泄漏的版本睦袖,不過呢,測試中仍舊在Ipad mini1上面出了問題荣刑。遂記下整個檢測流程馅笙。
首先,在已經(jīng)確認(rèn)將緩存從app中移出去了厉亏,不過測試的版本仍舊存在問題:ipad? mini1學(xué)習(xí)時間不能堅(jiān)持董习。這個時候,我有選擇性地屏蔽了部分代碼爱只。問題仍舊是存在的皿淋,屏蔽了加載圖集的imageview,然后效果并不是積極轉(zhuǎn)好。而是學(xué)習(xí)了一段時間,仍舊黑屏了窝趣。之所以要記錄這個過程疯暑,是真的有在排查這類問題。當(dāng)我看到xcode打印的memory warning哑舒,仍舊認(rèn)為哪里有問題妇拯。事實(shí)上,在此之前洗鸵,我也有考慮是音頻的問題越锈。在以前的很多次項(xiàng)目開發(fā)中,我并沒有遇到音頻的問題膘滨,但是到了Ipad mini1問題及其明顯了甘凭。也對比了很多區(qū)別。發(fā)現(xiàn)到火邓,播放的音頻的確存在區(qū)別丹弱。
其次,在確認(rèn)音頻存在區(qū)別铲咨,這個過程需要的就是改善了蹈矮。考慮到音頻數(shù)量龐大鸣驱,修改這個音頻的樣本率,的確不是最佳的選擇蝠咆。但是從安卓的情況看來踊东,我們確實(shí)可以設(shè)置__audioFileIndicator這個值。
看到這里刚操,竊以為將default值設(shè)置超過所有音頻的最大樣本率闸翅,當(dāng)然由于音頻數(shù)量龐大,而且也沒有嚴(yán)格規(guī)范菊霜,所以這個值設(shè)定坚冀,只能參考某個上限。例如很多音頻都是320kbs,那么這里的設(shè)置最大就應(yīng)該是320000了鉴逞,default和mp3的設(shè)置记某。然后及至看大這是安卓的實(shí)現(xiàn)時候,頓時覺得引擎里面真的是設(shè)置萬千构捡。針對安卓執(zhí)行一種方案液南,到了apple就沒有支持這種實(shí)現(xiàn)了。
于是繼續(xù)去看源碼實(shí)現(xiàn)勾徽,發(fā)現(xiàn)里面用到了preload滑凉,從字面意思自然是預(yù)加載。這里發(fā)現(xiàn)的問題,后文再講畅姊。Apple端的實(shí)現(xiàn)咒钟,并沒有安卓端的樣本頻率設(shè)置,導(dǎo)致所有的音頻必須是96-128kbs若未。當(dāng)然這是cocos引擎的建議朱嘴。