[英]Swift execute closure on main thread trough custom operator
顯然,Xcode不允許我從后台線程修改UI(iOS)。 我必須輸入:
let res = somethingReturningaString()
dispatch_async(dispatch_get_main_queue(), {
self.txtError.text = res!
})
我的想法是:“嘿,讓我們簡化生活並定義一個自定義運算符,這樣我就可以輸入:
prefix operator ~> {}
prefix func ~> (closure: ()-> ()) {
dispatch_async(dispatch_get_main_queue(), closure)
}
//usage example
~> {self.txtError.text = res!}
顯然類型'()'的運算符不能應用於'()->()',有人知道如何聲明它來使它起作用嗎?
敏捷的編譯器在那里有些困惑。 您絕對不能將一元運算符與其操作數分開,這意味着兩者之間一定不能有空格 。
考慮以下示例代碼
let k = 12
~> {
self.txtError.text = res!
}
Swift現在期望~>
是一個二進制操作數,因為存在空格。
二進制運算符'〜>'不能應用於'Int'和'()->()'類型的操作數
如果插入;
第一行之后:
let k = 12;
~> {
self.txtError.text = res!
}
您會得到一些幫助:
一元運算符不能與其操作數分開
這僅意味着實際上必須沒有空格。
刪除空格:
~>{ self.txtError.text = res! }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.