簡體   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