swift3.0 closure 闭包 定义属性 赋值 调用

有没有遇到过这样的需求:

闭包作为方法的参数用来回调,但是闭包的调用不是在本方内,而是在其他任何可能的地方。这样就需要把这个传进来的闭包保存起来,怎么保存呢?当然是用变量保存,也就是声明一个属性。这就涉及到标题中提到的定义闭包属性,给闭包属性赋值,和在任意其他方法内调用。虽然这些都是基本语法问题,只要熟悉语法就没问题,但就是这swift语法困扰了我好久,因为swift相对来说更新换代太快了,百度 谷歌一顿,虽然有这方面的资料,但都是之前版本,编译器不认。

1. 先来看闭包属性的定义:

var callBack:(([String:AnyObject])->())?

注意:*可选项最好加上,如果不加,编译器非得让你在类初始化方法中对其初始化

     *闭包的参数是根据我自己的需求写的。基本是这样的  (()->())

2. 闭包属性的赋值

    func method(complition:@escaping ([String:AnyObject])->()) {

        callBack = complition  //赋值就这么简单

        .....

    }


注意:*必须用 @escaping 修饰闭包参数,具体为什么请查@escaping语法,笔者也没有理解透,不过如果不加的话编译器会提醒你,并且帮你加上,大神程序员肯定会查个 究竟,一般程序员就这样了,然后就没有然后了。

     *定义的闭包和参数闭包必须一模一样:参数类型,参数个数,返回值类型


3. 闭包属性的调用

 self.callBack?([key:value as AnyObject])

注意:*解包是必须的


补充

还有一种定义闭包的方式,类似oc中的typeof,两种方式实现的效果一样

typealias callBackType = ([String:AnyObject])->() //这个是在类外部定义

var callBack:callBackType?


声明:以上是在swift3.0的语法基础上写的!!!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值