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

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

我不能使用模拟器的原因是我的应用程序使用Game Center,并且不能在模拟器上工作。

要在设备上进行testing,只需添加一些周期性分配大块内存而不释放内存的代码(即故意泄漏)。 您可以在单独的线程中执行此操作,也可以响应计时器,或使用最适合您testing和观察应用程序行为的任何机制。

您也可以select创build一个独立的应用程序,执行类似的操作,并且devise为在后台运行,如果您想轻松地重复使用和/或使用多个应用程序进行testing。

你可以调用私有方法

[[UIApplication sharedApplication] performSelector:@selector(_performMemoryWarning)]; 

只记得只在debugging时使用它,否则你的应用程序将被拒绝。

iOS模拟器的Simulate Memory Warning菜单项允许您模拟内存警告。

使用仪器,使用菜单项:仪器 – >模拟内存警告。

要从Xcode在您的应用程序上使用乐器,请使用产品 – >configuration文件菜单项。

我已经用Swift重写了Enzo Tran的答案 :

 UIControl().sendAction(Selector(("_performMemoryWarning")), to: UIApplication.shared, for: nil) 

这是一个将调用它的菜单命令。

Hardware > Simulate Memory Warning模拟器Hardware > Simulate Memory Warning

将@ChikabuZ转换为swift 3:

 UIControl().sendAction(Selector(("_performMemoryWarning")), to: UIApplication.shared, for: nil) 

如果有人出于某种原因试图在Swift 3中做到这一点 – 这里是如何分配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; }