2011-03-16 74 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