I know i can simulate a memory warning on the simulator by selecting 'Simulate Memory Warning' from the drop down menu of the iPhone Simulator. I can even make a hot key for that.
But this is not what I'd like to achieve. I'd like to do that from the code by simply, lets say doing it every 5 seconds. Is that possible?
It is pretty easy actually, however it relies on an undocumented api call, so dont ship your app with it (even if it is in a inaccessible code path). All you have to do is use [[UIApplication sharedApplication] _performMemoryWarning];
.
This method will have the app's UIApplication
object post the UIApplicationDidReceiveMemoryWarningNotification
and call the applicationDidReceiveMemoryWarning:
method on the App Delegate and all UIViewControllers
.
-(IBAction) performFakeMemoryWarning { #ifdef DEBUG_BUILD SEL memoryWarningSel = @selector(_performMemoryWarning); if ([[UIApplication sharedApplication] respondsToSelector:memoryWarningSel]) { [[UIApplication sharedApplication] performSelector:memoryWarningSel]; }else { NSLog(@"Whoops UIApplication no loger responds to -_performMemoryWarning"); } #else NSLog(@"Warning: performFakeMemoryWarning called on a non debug build"); #endif }
I wrote an apple script that will hammer the simulator with memory errors, it is a bit extreme but if your code survives, then you can be more confident...
on run repeat 100 times tell application "System Events" tell process "iOS Simulator" tell menu bar 1 tell menu bar item "Hardware" tell menu "Hardware" click menu item "Simulate Memory Warning" end tell end tell end tell end tell end tell delay 0.5 end repeat end run
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With