[英]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.