繁体   English   中英

Swift:Multipeer连接性+ UI更新

[英]Swift: Multipeer Connectivity + UI Update

我的应用程序是在大约5台iPad之间进行通信,并根据通过多对等连接框架接收的数据进行更新。

其中一台iPad执行以下操作:它获取其当前位置并将其发送给其他对等方。 对等方根据收到的位置更新UI。

我发现有一个问题,当iPad需要将数据包发送给其他人时,这会导致其UI没有立即更新。 UI事件一直停留到完成发送数据包为止。 由于位置会不断更新,因此所有这些事件都会持续触发。

我试图将发送数据包放在线程中:

  let bgQueue = DispatchQueue(label: "hk.edu.polyu.isurf.sendqueue", qos: .utility, attributes: .concurrent) 

然后将用于发送数据包的代码放入此bgQueue中:

func sendPacket {
  bgQueue.async {
     // create packet, and send 
  }
}

我的位置更新代码将导致以下情况:

func receiveLocation() {
   sendPacket()
   updateUI()
}

如何提高效率? UI基本上现在无法更新,这是严重的“滞后”。

我试图更改bgQueue的类型,但是没有任何改善。

谢谢。

您应该确保在主队列上正在更新您的UI。

如果您尝试在session didRecieve函数中更新UI,则此函数在后台运行。 这意味着需要将在其中进行的任何UI更改放入到主队列的Dispatch中,以便立即进行更新。

DispatchQueue.main.async
{
// UI updates go here
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM