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