概述
ios开发中经常遇到内存警告,内存警告的时候OS会暂时回收部分内存,这些内存不是当前显示的UI,当需要显示那些被回收内存的UI时,OS会自动调用那些UI的重建函数,重新构建,用时间换空间的一种策略。
开发过程中,需要模拟内存警告,并用对策处理这种情况,以便在发布之后出现内存警告时,不出现意外情况。
模拟内存警告,官方只提供在模拟器里调试时,通过模拟器的系统菜单有个触发选项。
那么,如果在程序中用代码模拟内存警告呢,一个老外研究了这个东西,主要思路就是从那个菜单开始,看那个菜单触发了什么函数,发送了什么消息之类的。。。下面贴点源码
-(void)simulateMemoryWarning
{
#if TARGET_IPHONE_SIMULATOR
#ifdef DEBUG
CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(),(CFStringRef)@"UISimulatedMemoryWariningNotification",NULL,NULL,true);
#endif
#endif
}
}
2012-3-26编辑如下
上面的方法不知道为啥不能用了,在ios4.3以上貌似都不行了,手头木有更低版本木有测试
又找到一个可以使用的
[[UIApplication sharedApplication] _performMemoryWarning];
虽然是private的API,不过,木关系啦,开发的时候使用还是很方便的,发布的时候注释掉就可以了。。
虽然这个可以用,但是发现一个问题
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
NSLog(@"%d unload",self.iTag);
}
使用了这个之后,log显示
vc didunload
v dealloc
如果模拟器菜单“内存警告时”,顺序如下
v dealloc
vc didunload
还木研究出具体原因来,不过,效果差不多吧,可以将就着用
最后
以上就是疯狂奇异果为你收集整理的iOS 开发中 代码实现 模拟内存警告的全部内容,希望文章能够帮你解决iOS 开发中 代码实现 模拟内存警告所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复