原:iPhone内存警告 -3

原:iPhone内存警告 -3

创建: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却可以。

 


+++++

你可能感兴趣的:(原:iPhone内存警告 -3)