【发布时间】:2021-11-06 07:34:58
【问题描述】:
我的代码如下
class WebSocketManager: ObservableObject {
@Published var messages: [String] = []
private let socket: URLSessionWebSocketTask =
URLSession(configuration: .default).webSocketTask(with: URL(string: "ws://localhost:8082")!)
func receiveMessage() {
socket.receive { result in
switch result {
case .failure(let error):
print("Error Detected: \(error)")
case .success(let message):
switch message {
case .string(let text):
DispatchQueue.main.async {
self.messages.append(text)
}
default:
print("Received data different format data")
}
self.receiveMessage()
}
}
}
我想知道是否还应该用DispatchQueue.main.async 包裹self.messages.append(text)
case .string(let text):
DispatchQueue.main.async {
self.messages.append(text)
}
或者我不需要包装它
case .string(let text):
self.messages.append(text)
因为它是由 SwiftUI 内部处理的
【问题讨论】: