iOS开发:如何在设备上引发低内存警告?

时间:2011-01-17 19:44:30

标签: iphone ipad ios

我想在低内存条件下测试我的应用程序功能,但很难测试。当应用程序在设备上运行而不是模拟器时,如何在我的视图中引发触发didReceiveMemoryWarning方法的低内存警告?或者我可以在这些可能的条件下测试我的应用程序有哪些方法?

我无法使用模拟器的原因是我的应用程序使用Game Center并且邀请函无法在模拟器上运行。

10 个答案:

答案 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)

斯威夫特4:

UIApplication.shared.perform(选择器(( “_ performMemoryWarning”)))

可以执行上述操作以响应事件/通知。

相关问题