Chciałbym sprawdzić, czy moja aplikacja działa dobrze w warunkach małej ilości pamięci, ale jest to trudne do przetestowania. Jak mogę wywołać ostrzeżenia o małej ilości pamięci, które wyzwalają metodę didReceiveMemoryWarning w moich widokach, gdy aplikacja jest uruchomiona na urządzeniu, a nie na symulatorze? Albo jakie są sposoby na przetestowanie aplikacji w tych możliwych warunkach?
Nie mogę używać symulatora, ponieważ moja aplikacja korzysta z Game Center, a zaproszenia nie działają na symulatorze.
Możesz wywołać metodę prywatną :
[[UIApplication sharedApplication] performSelector:@selector(_performMemoryWarning)];
Pamiętaj tylko, aby używać go tylko do debugowania, w przeciwnym razie Twoja aplikacja zostanie odrzucona.
źródło
po [[UIApplication sharedApplication]performSelector:@selector(_performMemoryWarning)]
expr (void)[[UIApplication sharedApplication] performSelector:@selector(_performMemoryWarning)];
expr (void)[[UIApplication sharedApplication] _performMemoryWarning]
expr UIApplication.sharedApplication().performSelector("_performMemoryWarning")
zamiast zwykłego#selector
Simulate Memory Warning
Pozycja menu symulatora iOS umożliwia symulację ostrzeżenia dotyczącego pamięci.źródło
Używając Instrumentów, użyj pozycji menu: Instrument -> Symulacja ostrzeżenia pamięci.
Aby używać instrumentów w swojej aplikacji z Xcode, użyj pozycji menu Produkt -> Profil.
źródło
Mam ponownie napisany odpowiedź Enzo Tran w Swift:
UIControl().sendAction(Selector(("_performMemoryWarning")), to: UIApplication.shared, for: nil)
źródło
Jeśli ktoś z jakiegoś powodu spróbuje to zrobić w Swift 4 - oto jak przeznaczyć 1,2 GB pamięci RAM.
let d = Data.init(repeating: 100, count: 1200000000)
źródło
Przekonwertowano @ChikabuZ na swift 3:
UIControl().sendAction(Selector(("_performMemoryWarning")), to: UIApplication.shared, for: nil)
źródło
Istnieje polecenie menu, które go wywoła.
Hardware > Simulate Memory Warning
z symulatora.źródło
Jeśli ktoś z jakiegoś powodu spróbuje to zrobić w Swift 3 - oto jak przeznaczyć 1,2 GB pamięci RAM.
for i in 0...1200 { var p: [UnsafeMutableRawPointer] = [] var allocatedMB = 0 p.append(malloc(1048576)) memset(p[allocatedMB], 0, 1048576); allocatedMB += 1; }
źródło
Swift 4:
UIApplication.shared.perform (Selector (("_ performMemoryWarning")))
Może wykonać powyższe w odpowiedzi na zdarzenie / powiadomienie.
źródło