最近項目遇到了一個非常難以查找的內存問題,由于內存一直在泄露導致視頻播放一段時間之后就會崩潰。然后leader要求在每個頁面的didReceiveMemoryWarning函數中寫一些釋放內存占用的代碼。下面是加的過程中的一點小建議,防止大家以后遇到這種問題踩坑。
1.注意:不要主動去調用didReceiveMemoryWarning函數,當內存出現問題,蘋果會發送一個內存警告的通知,然后系統會去調用這個函數
2.發生內存警告的時候,沒一個頁面都會收到這個通知,無論這個頁面是否正在顯示。
3.鑒于每個頁面都會收到這個通知,在釋放資源之前需要做一個簡單的判斷,那就是當前頁面是否是正在顯示的。
-(void)didReceiveMemoryWarning{
[super didReceiveMemoryWarning];
if (self.isViewLoaded && !self.view.window) {
//釋放資源的代碼
}
}
4.注意在釋放完資源之后,如果想讓當前頁面重新加載的時候走viewdidload方法,那么需要寫self.view = nil。