Я хотел бы хорошо протестировать работу моего приложения в условиях нехватки памяти, но это сложно проверить. Как я могу вызвать предупреждения о нехватке памяти, которые запускают метод didReceiveMemoryWarning в моих представлениях, когда приложение работает на устройстве, а не в симуляторе? Или как я могу протестировать свое приложение в этих возможных условиях?
Причина, по которой я не могу использовать симулятор, заключается в том, что мое приложение использует Game Center, а приглашения не работают на симуляторе.
Вы можете вызвать частный метод :
[[UIApplication sharedApplication] performSelector:@selector(_performMemoryWarning)];
Просто не забудьте использовать его только для отладки, иначе ваше приложение будет отклонено.
источник
po [[UIApplication sharedApplication]performSelector:@selector(_performMemoryWarning)]
expr (void)[[UIApplication sharedApplication] performSelector:@selector(_performMemoryWarning)];
expr (void)[[UIApplication sharedApplication] _performMemoryWarning]
expr UIApplication.sharedApplication().performSelector("_performMemoryWarning")
вместо обычного#selector
Simulate Memory Warning
Пункт меню iOS Simulator позволяет имитировать предупреждение о памяти.источник
Используя инструменты, используйте пункт меню: Instrument -> Simulate Memory Warning.
Чтобы использовать инструменты в своем приложении из Xcode, используйте пункт меню Продукт -> Профиль.
источник
Я переписал ответ Энцо Тран на Swift:
UIControl().sendAction(Selector(("_performMemoryWarning")), to: UIApplication.shared, for: nil)
источник
Если кто-то по какой-то причине попытается сделать это в Swift 4 - вот как выделить 1,2 ГБ оперативной памяти.
let d = Data.init(repeating: 100, count: 1200000000)
источник
Преобразовал @ChikabuZ в быстрый 3:
UIControl().sendAction(Selector(("_performMemoryWarning")), to: UIApplication.shared, for: nil)
источник
Есть команда меню, которая ее вызовет.
Hardware > Simulate Memory Warning
из симулятора.источник
Если кто-то по какой-то причине попытается сделать это в Swift 3 - вот как выделить 1,2 ГБ оперативной памяти.
for i in 0...1200 { var p: [UnsafeMutableRawPointer] = [] var allocatedMB = 0 p.append(malloc(1048576)) memset(p[allocatedMB], 0, 1048576); allocatedMB += 1; }
источник
Swift 4:
UIApplication.shared.perform (Selector (("_ performMemoryWarning")))
Может выполнить вышеуказанное в ответ на событие / уведомление.
источник