Невозможно имитировать вызов ApplicationDidreceiveMemoryWarning :?

StackOverflow https://stackoverflow.com/questions/5323515

  •  24-10-2019
  •  | 
  •  

Вопрос

Вот вызовный код:

[[NSNotificationCenter defaultCenter] postNotificationName:UIApplicationDidReceiveMemoryWarningNotification
                                                    object:[UIApplication sharedApplication]];

Это не может вызвать applicationDidReceiveMemoryWarning: из UIApplicationDelegate.

Ничего плохого?

Это было полезно?

Решение

Вы не можете имитировать предупреждение памяти, опубликовав уведомление. А UIApplicationDidReceiveMemoryWarningNotification опубликовано по UIApplication Когда он получает предупреждение о памяти, но оно не наблюдает, и поэтому не называют контроллеры вашего представления didReceiveMemoryWarning: Метод, когда вы публикуете такое уведомление вручную.

Как уже отмечал Роб, вы можете имитировать предупреждение памяти в симуляторе iOS, используя пункт меню «Моделировать предупреждение памяти».

Вы также можете наблюдать уведомление в контроллерах вашего взгляда, а не в реализации didReceiveMemoryWarning:, но я бы этого не рекомендовал, потому что поведение контроллеров, представленных системой, может отличаться, когда вы подделываете предупреждение о памяти.

Другие советы

В симуляторе используйте меню, чтобы вызвать предупреждение с низким содержанием памяти.

enter image description here

Что должно работать, это использовать UIApplicationMemoryWarningNotification вместо UIApplicationDidReceiveMemoryWarningNotification:

[[NSNotificationCenter defaultCenter] postNotificationName:@"UIApplicationMemoryWarningNotification"
        object:[UIApplication sharedApplication]];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top