Search code examples
iphoneiosxcodecocoa-touchmemory-warning

Is there a way to send Memory Warning to iPhone device manually?


I got one problem these days. I'm using an image-cache library, it works well but eventually i met memory issue and the app just quit itself (I guess it's because it just runs out of memory). After read the source code from the image-cache library, i found it's said that when there's memory warning event, it would release all images cached (the images are huge). Is there anyway for me to send Memory warning event to the device manually and directly ? I'm using xcode instrument tool to evaluate the memory usage.


Solution

  • You can manually simulate in the simulator:

    Hardware -> Simulate Memory Warning
    

    You can also simulate it programmatically:

    - (void)simulateMemoryWarning
    {
    #if TARGET_IPHONE_SIMULATOR
      #ifdef DEBUG
        CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(),    (CFStringRef)@"UISimulatedMemoryWarningNotification", NULL, NULL, true);
      #endif
    #endif
    }
    
    CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), (CFStringRef)@"UISimulatedMemoryWarningNotification", NULL, NULL, true);