我是靠谱客的博主 疯狂奇异果,最近开发中收集的这篇文章主要介绍iOS 开发中 代码实现 模拟内存警告,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 开发中 代码实现 模拟内存警告所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部