最近项目遇到了一个非常难以查找的内存问题,由于内存一直在泄露导致视频播放一段时间之后就会崩溃。然后leader要求在每个页面的didReceiveMemoryWarning函数中写一些释放内存占用的代码。下面是加的过程中的一点小建议,防止大家以后遇到这种问题踩坑。
1.注意:不要主动去调用didReceiveMemoryWarning函数,当内存出现问题,苹果会发送一个内存警告的通知,然后系统会去调用这个函数
2.发生内存警告的时候,没一个页面都会收到这个通知,无论这个页面是否正在显示。
3.鉴于每个页面都会收到这个通知,在释放资源之前需要做一个简单的判断,那就是当前页面是否是正在显示的。
-(void)didReceiveMemoryWarning{
[super didReceiveMemoryWarning];
if (self.isViewLoaded && !self.view.window) {
//释放资源的代码
}
}
4.注意在释放完资源之后,如果想让当前页面重新加载的时候走viewdidload方法,那么需要写self.view = nil。