我想在低内存条件下测试我的应用程序功能,但很难测试.当应用程序在设备上运行而不是模拟器时,如何在我的视图中引发触发didReceiveMemoryWarning方法的低内存警告?或者我可以在这些可能的条件下测试我的应用程序有哪些方法?
我无法使用模拟器的原因是我的应用程序使用游戏中心和邀请不在模拟器上工作.
Enz*_*ran 273
您可以调用私有方法:
[[UIApplication sharedApplication] performSelector:@selector(_performMemoryWarning)];
Run Code Online (Sandbox Code Playgroud)
只记得在调试时使用它,否则你的应用程序将被拒绝.
Tho*_*asW 19
使用仪器,使用菜单项:仪器 - >模拟内存警告.
要在Xcode上使用应用程序中的Instruments,请使用Product - > Profile菜单项.
Chi*_*buZ 10
我在Swift中重写了Enzo Tran的答案:
UIControl().sendAction(Selector(("_performMemoryWarning")), to: UIApplication.shared, for: nil)
Run Code Online (Sandbox Code Playgroud)
小智 8
要在设备上进行测试,只需添加一些代码,这些代码会定期分配大块内存而不会释放它(即故意泄漏).您可以在单独的线程中执行此操作,或者响应计时器,或使用最适合您测试和观察应用程序行为的任何机制.
如果您希望轻松地重复使用和/或测试多个应用程序,您也可以选择创建一个单独的应用程序来执行类似的操作并设计为在后台运行.
如果有人出于某种原因尝试在Swift 4中执行此操作-这是如何分配1.2 GB内存的方法。
let d = Data.init(repeating: 100, count: 1200000000)
Run Code Online (Sandbox Code Playgroud)
这是一个会调用它的菜单命令.
Hardware > Simulate Memory Warning
来自模拟器.
小智 7
将@ChikabuZ转换为swift 3:
UIControl().sendAction(Selector(("_performMemoryWarning")), to: UIApplication.shared, for: nil)
Run Code Online (Sandbox Code Playgroud)
如果有人出于某种原因尝试在 Swift 5 中执行此操作 - 以下是如何分配 1.2 GB RAM:
for _ in 0...1200 {
var p: [UnsafeMutableRawPointer] = []
var allocatedMB = 0
p.append(malloc(1048576))
memset(p[allocatedMB], 0, 1048576);
allocatedMB += 1;
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特4:
UIApplication.shared.perform(Selector(("_performMemoryWarning")))
Run Code Online (Sandbox Code Playgroud)
可以执行上述操作来响应事件/通知。例如:
Button(action: {
UIApplication.shared.perform(Selector(("_performMemoryWarning")))
}, label: {
Image(systemName: "memorychip")
})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
30489 次 |
最近记录: |