并发症更新会导致iOS应用程序冻结

时间:2016-05-06 20:58:08

标签: ios apple-watch watch-os-2 apple-watch-complication clockkit

我正在更新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)的召唤,而不是冻结的开始。令人费解。

我希望其中一些有用。对我来说,这仍然令人困惑。我很欣赏任何想法。

0 个答案:

没有答案