swift 基础学习(7) - 闭包
2017-04-12 00:00
357 查看
摘要: 闭包类似于 OC 的bock,但是比OC的block应用更广
// MARK: - 闭包 /** 闭包类似于 OC 的bock,但是比OC的block应用更广 1,在OC 中block是匿名的函数 2,在swift中 函数是特殊的闭包 闭包的应用场景 1,异步执行完成回调 2,控制器间的回调 3,自定义视图回调 */ /** 闭包: 1,提前准备好的代码 2,在需要的时候执行 3,可以当做参数传递 4,注意self循环引用 */
// 1 最简单的闭包 // 类型()-》()没有参数,没有返回值的函数,可以连 in 省略 let b1 = { print("hello") } // 执行闭包 b1()
// 2 带参数的闭包 // 闭包中的 参数,返回值 ,实现代码都是卸载{}中 {型参列表 -> 返回值 in 代码实现} // 注意: 需要使用关键字 “in” 分割定义和实现 // (Int) -> () 有参无返回值 let b2 = { (x: Int) -> () in print(x) } // 执行 b2(100)
// 3 带参数,有返回值的闭包 // (Int, Int) -> Int let b3 = { (x : Int , y : Int) -> Int in return x + y } // 执行 print(b3(10, 110))
// 4 无参数,有返回值的闭包 let b4 = { () -> String in return "傻逼" } print(b4())
// 实例: 闭包的回调 func loadData(completion:@escaping (_ resoult: [String])->()) -> () { DispatchQueue.global().async { print("耗时操作,如网络请求 \(Thread.current)") } //模拟请求的数据 let json = ["hah","adfa","dsfdf"] DispatchQueue.main.async { print("回到主线程更行UI\(Thread.current)") // 闭包作为参数的 调用 completion(json) } } // 调用 loadData { (json) in print(json) }
相关文章推荐
- swift 学习(二)基础知识 (函数,闭包,ARC,柯里化,反射)
- swift基础学习(04)[闭包、函数、枚举、类和结构体]
- Swift教程_通过改造官方Sample学习Swift(二)_Swift基础(简单值、控制流、方法和闭包)
- Swift 基础学习(闭包)
- swift 基础学习(8) - 闭包解除循环引用
- Swift 3.0基础学习之闭包
- Swift学习——Swift基础详解(七)
- Swift学习——Swift基础详解(三)
- Swift基础学习一
- Swift基础学习二
- swift学习笔记(六)——基础语法的总结
- Swift学习——Swift基础详解(一)
- Swift学习——Swift基础详解(二)
- Swift学习之十四:闭包(Closures)
- Swift学习之闭包疑惑解析2
- Swift学习笔记一(基础部分)
- Swift学习——Swift基础详解(四)
- Swift 学习笔记之基础
- Swift编程语言教程-001入门学习基础
- Swift学习笔记(9)--闭包