创建:2011.06.27
修改:2012.03.15
修改:2012.03.26
参见附件。
补充:
ipad 2,ios4.3 测试:
*memory warning不会打断一个函数的执行。所以,一个函数如果消耗太多内存,则收不到memory warning就直接退出了。
*当SpringBoard发出mw之后,程序要等待当前正在执行的函数结束之后,才能收到mw。
*设定一个Timer执行分配内存大的操作,则当间隔小于等于0.0003f秒时,则不能在mw1时收到警告,只能在mw2时才能收到警告。因此,如果要执行2个分配内存较大的操作时,中间间隔至少要比0.0003f秒大。
*如果在一个大的内存分配的函数之后,performSelector另外一个大的操作,则间隔时间如果小于等于0.0001f,则无法收到mw。所以,要比0.0001f大。
补充:
如果要让代码自动发送内存不足的请求,可以:
- (void)simulateMemoryWarning
{
#if TARGET_IPHONE_SIMULATOR
CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), (CFStringRef)@"UISimulatedMemoryWarningNotification", NULL,NULL, true);
#endif
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[self simulateMemoryWarning];
}
注意:只能在模拟器下才可以用。此外,在iOS5下不行,在iOS4.3下可以。
另外:转自:http://idevrecipes.com/2011/05/04/debugging-magic-auto-simulate-memory-warnings/
不过,原文中是放在viewWillAppear中,但是,这样即无法收到viewDidUnload消息了,因此,不过viewDidDisappear却可以。
+++++