学习 swift 闭包

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 调用。。。。 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、范型范型所解决的问题 函数、方法、类型:类,结构体,枚举,元组类型,协议参数,返回值,成员函数参数,成员属性类...
    我是小胡胡123阅读 886评论 0 1
  • Swift 介绍 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 ...
    大L君阅读 3,339评论 3 25
  • Swift 简介 查看Swift当前版本 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X...
    mian小爬阅读 373评论 0 1
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,281评论 30 472
  • 从去年开始,我们这地方的气候就与往年相异,自雨水落地进入雨季以来便很少有过天晴日,即便无雨也晴不过两天,然...
    唯一还是我阅读 256评论 17 15