我正在更新Apple Watch复杂功能。但是当我在iOS上调用session.transferCurrentComplicationUserInfo(userInfo)
时,我的应用程序冻结了几分之一秒,有时甚至更长。在拖动手势或动画期间,它是显而易见的。
如何避免这种情况但仍会更新并发症?
这就是我将复杂化称为更新的方法
private var validSession: WCSession? {
if let session = session where session.paired && session.watchAppInstalled {
return session
}
return nil
}
func updateApplicationContext(userInfo: [String : AnyObject]) {
if let session = validSession {
if session.complicationEnabled {
do {
session.transferCurrentComplicationUserInfo(userInfo)
}
}
}
}
有趣的是,当我对session.updateApplicationContext(userInfo)
做同样的事情时,它不会导致冻结(当然它也不会更新并发症)。
func updateApplicationContext(userInfo: [String : AnyObject]) {
if let session = validSession {
do {
try session.updateApplicationContext(userInfo)
} catch let error {
print("[Update] \(error)")
}
}
}
我也试图介绍该应用。不幸的是,在Profiler运行时,我无法从手表扩展切换到iOS应用程序。 (这方面的任何提示都是受欢迎的)Funnily我确实设法做了一次,并记得在时间分析器中看到冻结为零活动一段时间。奇怪的是,我发现了session.transferCurrentComplicationUserInfo(userInfo)
的召唤,而不是冻结的开始。令人费解。
我希望其中一些有用。对我来说,这仍然令人困惑。我很欣赏任何想法。