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中的闭包和Objective-C中的代码块(b...
    EndEvent阅读 4,278评论 4 8
  • 闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 C 和 Objective-C 中的代...
    穷人家的孩纸阅读 5,663评论 1 5
  • Swift 中的闭包是自包含的函数代码块,可以在代码中被传递和使用。类似于OC中的Block以及其他函数的匿名函数...
    乔克_叔叔阅读 3,437评论 1 3
  • Swift-闭包 Swift闭包的含义 闭包是自包含的功能代码块,可以用作函数的参数或者返回值 闭包可以捕获上下文...
    stackJolin阅读 4,968评论 0 2
  • 21号:联盟与菲尼克斯大厦(地方文化遗产) 西班牙联盟与菲尼克斯(La Unión y El Fénix Espa...
    格列柯南阅读 5,390评论 0 9