Невозможно имитировать вызов ApplicationDidreceiveMemoryWarning :?
-
24-10-2019 - |
Вопрос
Вот вызовный код:
[[NSNotificationCenter defaultCenter] postNotificationName:UIApplicationDidReceiveMemoryWarningNotification
object:[UIApplication sharedApplication]];
Это не может вызвать applicationDidReceiveMemoryWarning:
из UIApplicationDelegate
.
Ничего плохого?
Решение
Вы не можете имитировать предупреждение памяти, опубликовав уведомление. А UIApplicationDidReceiveMemoryWarningNotification
опубликовано по UIApplication
Когда он получает предупреждение о памяти, но оно не наблюдает, и поэтому не называют контроллеры вашего представления didReceiveMemoryWarning:
Метод, когда вы публикуете такое уведомление вручную.
Как уже отмечал Роб, вы можете имитировать предупреждение памяти в симуляторе iOS, используя пункт меню «Моделировать предупреждение памяти».
Вы также можете наблюдать уведомление в контроллерах вашего взгляда, а не в реализации didReceiveMemoryWarning:
, но я бы этого не рекомендовал, потому что поведение контроллеров, представленных системой, может отличаться, когда вы подделываете предупреждение о памяти.
Другие советы
В симуляторе используйте меню, чтобы вызвать предупреждение с низким содержанием памяти.
Что должно работать, это использовать UIApplicationMemoryWarningNotification
вместо UIApplicationDidReceiveMemoryWarningNotification
:
[[NSNotificationCenter defaultCenter] postNotificationName:@"UIApplicationMemoryWarningNotification"
object:[UIApplication sharedApplication]];