首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >apple watch和iPhone之间的通信非常慢

apple watch和iPhone之间的通信非常慢
EN

Stack Overflow用户
提问于 2017-02-13 02:28:09
回答 1查看 298关注 0票数 3

我已经写了一个非常基本的Xcode项目,其中包含3个目标:- iOS目标- WatchKit应用程序- WatchKit扩展

首先,我不明白为什么Xcode要为WatchKit应用程序创建第二个目标(扩展)?看起来WatchKit应用包含了故事板,而WatchKit扩展包含了swift代码(控制器)。Xcode设计和拆分两个目标而不是一个目标有什么特别的原因吗?

看看这段非常基本的代码:

iOS控制器:

代码语言:javascript
运行
复制
override func viewDidLoad()
{
    super.viewDidLoad()

    if WCSession.isSupported()
    {
        let session = WCSession.default()
        session.delegate = self
        session.activate()
    }
}

@IBAction func on_btn_tap(_ sender: Any)
{
    if WCSession.isSupported()
    {
        let session = WCSession.default()
        session.sendMessage(["mykey": "myvalue"], replyHandler: { (response) -> Void in

            NSLog("OK")

        }, errorHandler: { (error) -> Void in
            NSLog("Error)
        })
    }
}

On watch扩展(InterfaceController.swift):

代码语言:javascript
运行
复制
override func awake(withContext context: Any?)
{
    super.awake(withContext: context)

    if WCSession.isSupported()
    {
        let session = WCSession.default()
        session.delegate = self
        session.activate()
    }
}

extension InterfaceController: WCSessionDelegate
{
    func session(_ session: WCSession,
                 activationDidCompleteWith activationState: WCSessionActivationState,
                 error: Error?)
    {

    }

    func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void)
    {
        self.btn.setBackgroundColor(UIColor.yellow)
    }
}

如你所知,我的iOS应用程序上有一个按钮。当我点击这个按钮时,我向Watch App发送了一条消息,这个应用程序会改变按钮的颜色。

在iPhone上轻敲按钮和颜色变化之间有大约5-6秒的延迟。你知道为什么吗?在另一个通信端(观看iPhone),它是最差的(10-15秒)

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-08-02 17:43:48

由于您要更新UI,因此需要将其包装在DispatchQueue中,如下所示:

代码语言:javascript
运行
复制
DispatchQueue.main.async {
    self.btn.setBackgroundColor(UIColor.yellow)
}

这些委托回调不在主线程上,您不应该从主线程以外的任何其他线程更新您的UI。像这样包装它会使你的UI更新更快,代码更安全。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42191502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档