swift-22GCD
1900 ワード
私が以前作ったswiftノートは、以前はonenoteに整理されていましたが、最近ブログを整理したいと思っています.自分で探すのも便利で、自分のドキュメントにすることができます.
関数の最後のパラメータが閉パッケージ関数パラメータである場合、最後のパラメータを事前に終了して直接{}パッケージをパッケージするコードの多くを使用して、xcodeは自動的に閉パッケージに後続するように調整されますが、gcdがネストされている場合、ネストされた後続の閉パッケージは、xcodeは自動的に閉パッケージスタイルに後続するように調整されません.
Function types cannot have argument labels; use '' before 'result' func loadData(completion: @escaping ( result: [String])->()) -> (){
override func viewDidLoad() {
super.viewDidLoad()
demo()
// loadData { (result) in
// print(" \(result)")
// }
‘尾’随閉包
関数の最後のパラメータが閉パッケージ関数パラメータである場合、最後のパラメータを事前に終了して直接{}パッケージをパッケージするコードの多くを使用して、xcodeは自動的に閉パッケージに後続するように調整されますが、gcdがネストされている場合、ネストされた後続の閉パッケージは、xcodeは自動的に閉パッケージスタイルに後続するように調整されません.
原始的な書き方の最も完全な書き方
loadData(completion: { (result: [String])->() in
print(" \(result)")
})
}
非同期でタスクを実行して結果をblock/閉パッケージでコールバックする
block
Function types cannot have argument labels; use '' before 'result' func loadData(completion: @escaping ( result: [String])->()) -> (){
キューにタスクを追加タスクを実行する関数を指定
翻訳:'キュー'スケジューリングタスク(block/閉パッケージ)は同期/非同期で実行されます。
DispatchQueue.global().async {
print(" \(Thread.current)")
//
Thread.sleep(forTimeInterval: 3.0)
//
let json = [" ", " ", " "]
//
DispatchQueue.main.async{
print(" UI \(Thread.current)" )
// ( )
completion(json)
}
}
}
テイルバック
func demo1(){
DispatchQueue.global().async {
DispatchQueue.main.async(execute: {
})
}
DispatchQueue.main.async {
}
}
func demo(){
let b1: (Int)->()
b1 = { (x: Int) -> () in
print("\(x)")
}
b1(4)
}