项目中闭包的使用Swift

Swift闭包类似OC的代码块(block)

语法

{ (参数1(可无可有) ) -> 返回值类型(可无可有) in  
           执行的代码
}
先来定义一个 有参数,有返回值 闭包
//计算两个数值的和

// 定义执行的代码块,赋值给一个常量
   let calculate =  { (item1 : Int , item2 : Int) ->Int  in
   return item1 + item2
}
//当我们传值后,会立即执行代码块,根据有无返回值 
let result = calculate(200,50)
print(result)
//运行结果 250 

实际项目中,

举个例子: 购买商品订单结算页面,结算前你必须要填入收货地址(这只是其中一个必选项),当我从收货地址页面选择好地址时,要显示在订单页面给客户看到,这是我只需要一个闭包就能完成(当然 代理也是能实现的)
//在订单控制器 (OrderlistController)  执行闭包函数


let addressController = AddressController()//地址选择页面
//闭包执行区
addressController.goodsAddress = { [weak self] (address:String) in
   //赋值当前控件 显示收货地址
    self.addressLable.text = address
}

//地址控制器 (AddressController) 选择收货地址
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
      guard  let addressModel = AddressListArray[indexpath.row] else{return}

       //闭包赋值操作, 当闭包赋值执行时, 会立即调用 闭包执行区
      goodsAddress(addressModel.name)//addressModel.name 指地址名称
 }

你可能感兴趣的:(项目中闭包的使用Swift)