Есть ли способ отправить Memory Warning на устройство iPhone вручную?

В наши дни я столкнулся с одной проблемой. Я использую библиотеку изображений-кеш, она работает хорошо, но в конечном итоге я столкнулся с проблемой памяти, и приложение просто ушло из себя (я предполагаю, что это просто закончилось). После того, как вы прочитали исходный код из библиотеки изображений, я обнаружил, что, когда появляется предупреждение о предупреждении памяти, он освобождает все изображения, кэшированные (изображения огромны). Есть ли в любом случае для отправки сообщения о событии памяти на устройство вручную и напрямую? Я использую инструмент инструмента xcode для оценки использования памяти.

Ответы

Ответ 1

Вы можете вручную имитировать симулятор:

Hardware -> Simulate Memory Warning

Вы также можете имитировать его программно:

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

CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), (CFStringRef)@"UISimulatedMemoryWarningNotification", NULL, NULL, true);

Ответ 2

Предупреждение о памяти может быть вызвано вызовом частного метода UIApplication. Он отлично работает на iOS 6.1 и ниже

  [[UIApplication sharedApplication]performSelector:@selector(_performMemoryWarning)];

ПРИМЕЧАНИЕ. Удалите этот селекторный вызов перед отправкой приложения в iTunes, иначе он будет отклонен.