swift闭包

直接上代码

import UIKit

classViewController:UIViewController{

    // 1. 没有参数,没有返回值的闭包()->() 如果没有参数,没有返回值,in可以省略


    letb1 = {


        print("没有参数,没有返回值的闭包")

    }

    overridefuncviewDidLoad() {

        super.viewDidLoad()


        // 执行闭包

        b1()


        // 2. 带参数的闭包  参数,返回值,实现代码都是写在{}中

        // {形参列表 - >返回值类型  // 实现代码}

        // 使用 in 分割定义和实现 b2的类型: (String) -> ()

        letb2 = { (str:String) ->()in


            print(str)

        }

        // 执行闭包

        b2("带参数的闭包")



        // 3.带参数/返回值的闭包

        // (String) -> String

        let  b3 = {(Str:String) ->Stringin


            returnStr +"回值的闭包"

        }

        // 闭包调用

        print(b3("带参数/返"))



        // 4.异步执行任务,获取数据,通过block/闭包回调,闭包的应用场景和闭包一样

        loadData{ (result)in

            print(result)

        }



    }


    //4操作步骤

    funcloadData(completion:@escaping(_result: [String]) ->()) -> () {


        // 将任务添加到队列,执行任务的操作,队列的调度是以同步/异步执行任务

        DispatchQueue.global().async{

            print("耗时操作\(Thread.current)")

            // 休眠

            Thread.sleep(forTimeInterval:1.0)


            // 获得数据

            letjson = ["后台","数据","异步回调"]

            //主线程更新

            DispatchQueue.main.async(execute: {

                print("主线程更新UI\(Thread.current)")


                // 回调,执行,通过参数回调

                completion(json)

            })

        }

    }

}

你可能感兴趣的:(swift闭包)