我正在更新 Apple Watch 复杂功能。但是当我session.transferCurrentComplicationUserInfo(userInfo)
在 iOS 上调用时,我的应用程序会冻结几分之一秒,有时甚至更长。当它在拖动手势或动画期间很明显。
我怎样才能避免这种情况但仍然更新并发症?
附加上下文
这就是我将并发症称为更新的方式
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 应用。(也欢迎任何提示)有趣的是,我确实设法做到了一次,并记得在时间分析器中将冻结视为零活动一段时间。奇怪的是,我session.transferCurrentComplicationUserInfo(userInfo)
在结尾而不是冻结开始时发现了呼叫。令人费解。
我希望其中一些是有帮助的。对我来说,这仍然很令人困惑。我很欣赏任何想法。