0

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 の実行中に watch 拡張機能から iOS アプリに切り替えるのに問題があります。(これに関するヒントも大歓迎です) おかしなことに、私は一度それを行うことができましたが、時間プロファイラーでしばらくフリーズがゼロのアクティビティとして表示されたことを覚えています。奇妙なことにsession.transferCurrentComplicationUserInfo(userInfo)、フリーズの始まりではなく、最後に の呼び出しを見つけました。不可解。

これが役立つことを願っています。私にとって、これはまだかなり混乱しています。アイデアをいただければ幸いです。

4

0 に答える 0