学习 swift 闭包

2017-10-27  本文已影响27人  Faith_K

1. 声明一个可为空的闭包 (() ->Void)? 表示没有参数 如果需要参数 ((_ x :String ) ->Void)?

var doSomethingHandle : (() ->Void)?

2.初始化闭包,相当于OC 中的实现闭包

self.doSomethingHandle = {()-> Void in

print("diaoyongbihaa")

}

3.调用闭包 

// 这里不加判断 假如doSomethingHandle 为nil 也就是没有初始化,相当于OC block 没有实现。使用 !强制解包 会导致崩溃 : fatal error: unexpectedly found nil while unwrapping an Optional value,  在对变量值操作前添加?,判断如果变量时nil,则不响应后面的方法。

if self.doSomethingHandle != nil{

self.doSomethingHandle!()

}

以上为个人理解内容。有不对的地方 多多指教。

OC 版本 

1.声明一个block

/*

* void 返回值

* 声明一个 blcok 属性 为 doSomethingHandle

* () 参数 这里是没有参数 如果有 void(^doSomethingHandle)(NSString *str)

*/

@property (copy, nonatomic) void(^doSomethingHandle)()

2.实现block

self.doSomethingHandle = ^ (){

};

3.调用block

if (self.doSomethingHandle) {

self.doSomethingHandle();

}

对比下 switf的闭包 与oc 的block 只是语法有改变,但是方式都一样,1.声明闭包,2,实现闭包,3 调用。。。。 

上一篇下一篇

猜你喜欢

热点阅读