Swift闭包简单入门

2016-11-05  本文已影响14人  浮桥小麦
前言:就像OC中的block一样,Swift中的闭包也把我搞得晕头转向的(人太笨)趁着失业,好好总结总结来年再战
// MARK:- NO.1 简单举例
#首先对Swift中的函数大家熟悉吧
           函数名(形参)-> (返回值类型) {
                     执行代码
       }
  func <#name#>(<#parameters#>) -> <#return type#> {
        <#function body#>
    }
//写个最简单的闭包
let work = {
 print(“工作在哪里")
}
//这个闭包是一个没有参数,没有返回值的函数—调用
work()

// MARK:- NO.2 有参数的闭包
#在闭包中:参数,返回值,实现代码都是写在{}中的
#在定义和实现之间需要关键字”in”来分隔 — {参数 ->返回值类型 in 实现代码 }
let eg = { (x: Int) -> () in 
    print(x)
}
eg (78)
// MARK:- NO.3 有参数有返回值的闭包
let eg1 = { (x: Int , y: Int) -> Int in 
 return x + y 
}
  print(eg1(10, 39))

// MARK:- NO.4 闭包作为参数传递(异步执行回调数据)
 //调用
        loadData { (result) in
            print("获取到数据\(result)")
        }

func loadData(completion: @escaping (_ result: [String]) -> ()) -> ()  {
        
        // 将任务添加到队列,指定执行任务的函数
        // 队列调度任务(block/闭包),以同步/异步方式执行
        
       //全局队列异步执行
        DispatchQueue.global().async { 
            
          print("耗时操作 \(Thread.current)")
        
          //获得结果
            let data = ["麦迪","科比","奥胖"]
            
            //获取一些结果,然后主队列回调
           DispatchQueue.main.async(execute: { 
            
            print("主线程更新UI\(Thread.current)")
         
            completion(data)
           
           })
        
        }
        
    }

上一篇 下一篇

猜你喜欢

热点阅读