Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Simulate memory warnings from the code, possible? [duplicate]

Tags:

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?

like image 813
krasnyk Avatar asked May 06 '10 22:05

krasnyk


2 Answers

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 } 
like image 162
Brad The App Guy Avatar answered Oct 29 '22 03:10

Brad The App Guy


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 
like image 29
Vic320 Avatar answered Oct 29 '22 04:10

Vic320