2011-03-16 68 views
2

下面是调用代码:无法模拟调用applicationDidReceiveMemoryWarning:?

[[NSNotificationCenter defaultCenter] postNotificationName:UIApplicationDidReceiveMemoryWarningNotification 
                object:[UIApplication sharedApplication]]; 

它不能从UIApplicationDelegate调用applicationDidReceiveMemoryWarning:

有什么问题吗?

+0

是不是调用委托方法?我见过很多示例都使通知​​名称成为字符串,例如@“UIApplicationDidReceiveMemoryWarningNotification”。我怀疑这真的很重要,因为这个常数可能是一样的。 – raidfive 2011-03-16 13:43:02

+0

即使更改为NSString,它也无法工作。 – Forrest 2011-03-17 03:42:48

回答

0

无法通过发布通知模拟内存警告。 UIApplicationDidReceiveMemoryWarningNotificationUIApplication当它收到一个内存警告,但它没有遵守它,因此不会调用您的视图控制器的'didReceiveMemoryWarning:方法,当你手动发布这样的通知。

正如Rob已经指出的那样,您可以使用“模拟内存警告”菜单项在iOS模拟器中模拟内存警告。

您也可以在您的视图控制器中观察通知,而不是实现didReceiveMemoryWarning:,但我不会建议这样做,因为当您以这种方式伪造内存警告时,系统提供的视图控制器的行为可能会有所不同。

0

我应该使用UIApplicationMemoryWarningNotification代替UIApplicationDidReceiveMemoryWarningNotification工作:

[[NSNotificationCenter defaultCenter] postNotificationName:@"UIApplicationMemoryWarningNotification" 
     object:[UIApplication sharedApplication]]; 
2

在模拟器,使用菜单来触发内存不足警告。

enter image description here