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

 

还木研究出具体原因来,不过,效果差不多吧,可以将就着用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值