swift-22GCD

1900 ワード

私が以前作ったswiftノートは、以前はonenoteに整理されていましたが、最近ブログを整理したいと思っています.自分で探すのも便利で、自分のドキュメントにすることができます.
 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)
    }