Есть ли способ отправить 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, иначе он будет отклонен.