Saya ingin menguji fungsi aplikasi saya dengan baik dalam kondisi memori rendah, tetapi sulit untuk menguji. Bagaimana saya bisa menyebabkan peringatan memori rendah yang memicu metode didReceiveMemoryWarning dalam tampilan saya saat aplikasi berjalan di perangkat, bukan simulator? Atau dengan cara apa saja saya dapat menguji aplikasi saya dalam kondisi yang memungkinkan?
Alasan saya tidak dapat menggunakan simulator adalah aplikasi saya menggunakan Game Center dan undangan tidak berfungsi di simulator.
Anda dapat memanggil metode pribadi :
[[UIApplication sharedApplication] performSelector:@selector(_performMemoryWarning)];
Ingatlah untuk menggunakannya hanya pada debug, atau aplikasi Anda akan ditolak.
sumber
po [[UIApplication sharedApplication]performSelector:@selector(_performMemoryWarning)]
expr (void)[[UIApplication sharedApplication] performSelector:@selector(_performMemoryWarning)];
expr (void)[[UIApplication sharedApplication] _performMemoryWarning]
expr UIApplication.sharedApplication().performSelector("_performMemoryWarning")
alih-alih menggunakan yang biasa#selector
Simulate Memory Warning
Item menu iOS Simulator memungkinkan Anda untuk mensimulasikan peringatan memori.sumber
Menggunakan Instrumen, gunakan item menu: Instrumen -> Simulasikan Peringatan Memori.
Untuk menggunakan Instrumen di aplikasi Anda dari Xcode, gunakan item menu Produk -> Profil.
sumber
Saya telah menulis ulang jawaban Enzo Tran di Swift:
UIControl().sendAction(Selector(("_performMemoryWarning")), to: UIApplication.shared, for: nil)
sumber
Jika seseorang, karena alasan apa pun, mencoba melakukan ini di Swift 4 - berikut adalah cara mengalokasikan ram 1,2 GB.
let d = Data.init(repeating: 100, count: 1200000000)
sumber
Mengonversi @ChikabuZ ke swift 3:
UIControl().sendAction(Selector(("_performMemoryWarning")), to: UIApplication.shared, for: nil)
sumber
Ada perintah menu yang akan memanggilnya.
Hardware > Simulate Memory Warning
dari simulator.sumber
Jika seseorang, karena alasan apa pun, mencoba melakukan ini di Swift 3 - berikut adalah cara mengalokasikan ram 1,2 GB.
for i in 0...1200 { var p: [UnsafeMutableRawPointer] = [] var allocatedMB = 0 p.append(malloc(1048576)) memset(p[allocatedMB], 0, 1048576); allocatedMB += 1; }
sumber
Cepat 4:
UIApplication.shared.perform (Selector (("_ performMemoryWarning")))
Dapat mengeksekusi hal di atas sebagai respons atas suatu peristiwa / notifikasi.
sumber