我做在後臺線程一些溝通工作,這是我開始像這樣:通報從後臺線程主UI線程在斯威夫特4
self.thread = Thread(target: self, selector: #selector(threadMain), object: nil)
self.thread?.start()
...
func threadMain() {
...
}
threadMain是正確調用並且處理按照應該的順序進行。在threadMain最後的代碼序列是通過外部提供的回調「的onComplete」的主線程的通知,這是我想做的事,像這樣:
print("leaving thread")
DispatchQueue.main.async {
self.onComplete?(CommunicationCallbackParams(errorCode:
self.errorCode, commState: self.commState, redirectUrl: self.redirectUrl))
}
然而,瓶蓋內的代碼不會被調用。如果我刪除「DispatchQueue.main.async」包裝它工作,但我通知非UI線程級別。這裏可能會出現什麼問題?
同樣的原則在Objective C的工作正常...
顯示'onComplete'屬性的定義。 –
private var onComplete :((CommunicationCallbackParams) - >())? – decades
而且它從所需的類初始化的構造中設置(URL theUrl:字符串;的onComplete:@escaping((CommunicationCallbackParams) - >())){ \t \t self.url = theUrl \t \t self.onComplete =的onComplete \t \t \t \t super.init() \t \t \t \t self.thread =螺紋(目標:自,選擇器:#selector(threadMain),對象:無) \t \t self.thread。開始(? ) \t} – decades