我想测量用户在我的应用程序中执行某些操作需要多长时间(以秒为单位)。一些示例是登录、按下某个页面上的按钮等。
我正在使用 NSTimer
为了那个原因。我从 viewDidLoad
开始的特定页面,并在我想要测量的点停止它。
我还想测量某些事情的累积时间。我想在登录屏幕上启动计时器,然后继续计时器,直到用户到达下一个 View Controller 并单击某个按钮。
我不知道该怎么做。应该在我的应用程序委托(delegate)中创建一个全局变量吗?还是有其他更好的方法?
最佳答案
不需要 NSTimer,您只需要记录开始时间并将它们与停止时间进行比较。尝试使用一个小助手类,例如:
class MyTimer {
static let shared = MyTimer()
var startTimes = [String : Date]()
func start(withKey key: String) {
startTimes[key] = Date()
}
func measure(key: String) -> TimeInterval? {
if let start = startTimes[key] {
return Date().timeIntervalSince(start)
}
return nil
}
}
要使用它,只需在开始长时间运行的任务之前调用 start(withKey:) 即可。
MyTimer.shared.start(withKey: "login")
做一些需要一段时间的事情,然后在完成后调用 measure(key:) 。因为 MyTimer 是一个单例,所以可以从代码中的任何位置调用它。
if let interval = MyTimer.shared.measure("login") {
print("Logging in time: \(interval)")
}
如果您使用多个线程,您可以为此添加一些线程安全性,但它应该在简单的场景中正常工作。
关于ios - 跟踪用户浏览 iOS 应用的 UI 所花费的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44767715/