Есть ли способ отправить Память Предупреждение на устройство iPhone вручную?

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

2 ответа

Решение

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

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);

Предупреждение о памяти можно получить, вызвав закрытый метод UIApplication. Работает нормально на iOS 6.1 и ниже

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

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

Другие вопросы по тегам