我想在低内存条件下测试我的应用程序功能,但很难测试。当应用程序在设备上运行而不是模拟器时,如何在我的视图中引发触发didReceiveMemoryWarning方法的低内存警告?或者我可以在这些可能的条件下测试我的应用程序有哪些方法?
我无法使用模拟器的原因是我的应用程序使用Game Center并且邀请函无法在模拟器上运行。
答案 0 :(得分:268)
您可以调用私有方法:
[[UIApplication sharedApplication] performSelector:@selector(_performMemoryWarning)];
请记住仅在调试时使用它,否则您的应用将被拒绝。
答案 1 :(得分:22)
iOS模拟器的Simulate Memory Warning
菜单项允许您模拟内存警告。
答案 2 :(得分:19)
使用Instruments,使用菜单项:Instrument - >模拟内存警告。
要在Xcode上使用应用程序中的乐器,请使用产品 - >个人资料菜单项。
答案 3 :(得分:8)
我在Swift中重写了Enzo Tran's answer:
UIControl().sendAction(Selector(("_performMemoryWarning")), to: UIApplication.shared, for: nil)
答案 4 :(得分:7)
Theres一个菜单命令将调用它。
来自模拟器的 Hardware > Simulate Memory Warning
。
答案 5 :(得分:6)
要在设备上进行测试,只需添加一些代码,这些代码会定期分配大块内存而不会释放它(即故意泄漏)。您可以在单独的线程中执行此操作,或者响应计时器,或使用最适合您测试和观察应用程序行为的任何机制。
如果您希望轻松地重复使用和/或使用多个应用程序进行测试,您也可以选择创建一个单独的应用程序,它可以执行类似的操作,并且可以在后台运行。
答案 6 :(得分:6)
将@ChikabuZ转换为swift 3:
UIControl().sendAction(Selector(("_performMemoryWarning")), to: UIApplication.shared, for: nil)
答案 7 :(得分:4)
如果有人出于某种原因尝试在Swift 4中执行此操作 - 以下是如何分配1.2 GB的内存。
let d = Data.init(repeating: 100, count: 1200000000)
答案 8 :(得分:3)
如果有人出于某种原因尝试在Swift 3中执行此操作 - 以下是如何分配1.2 GB的内存。
-Tables table1,table2
答案 9 :(得分:0)
UIApplication.shared.perform(选择器(( “_ performMemoryWarning”)))
可以执行上述操作以响应事件/通知。