Swift中的一等公民-函数(Func)

goddess

函数的定义

  1. 无参数无返回值
    func callFunc(){
    print("func")
    }
    2.有参数无返回值
    func callFunc(paramer: [String: String]){
    print(paramer)
    }
    3.调用函数
    callAdd()
    callFunc(paramer: ["name" : "二先生"])
    【注意】函数是特殊的闭包

闭包的定义

  //定义一个闭包
    let callAdd: (Int,Int)->(Int) = { a,b  in
        return a + b
    }

let closeur = {(x: Int)->(Int) in
            
            return x
        }
        print(closeur(19))

在swift 中的闭包和oc中的block 不仅定义差不多连使用场景也一样 : 1. 定义一个{}包装的代码块。2. 等到需要的时候在调用。 3 . 可以做为函数的参数传递

使用场景: 1. 异步请求数据的回调。2. 视图控制器的回调 3. 自定义视图的回调
第一种最常用的用法:数据回调

//定义全局函数记录closure 
var closureCompletion: (()->())?
//closure
 //@escaping 如果闭包在函数执行完后才被调用,称为逃逸闭包。典型的列子就是网络请求结束后,回调请求的数据
 //@noescape  非逃逸闭包。snapkit 添加约束的方法就是非逃逸闭包

func loadData(completion: @escaping ()->()) -> () {
        closureCompletion = completion
        DispatchQueue.global().async {
             sleep(3)//耗时
            DispatchQueue.main.async(execute: { 
                //回调
                completion()
            })
        }
    }

【这样就形成了你中有我,我中有你就需要破环,避免循环引用占用内存】
  方法1:      weak var weakSelf = self //破除循环
        //回调
        loadData {
            weakSelf?.view.backgroundColor = UIColor.red //closure 对 self的引用
//             ? 和 ! 的区别
//                ?可选解包     如果取出来的对象为nil,就不会去调用get method
//                !强制解包 ,强制解包会调用对象的get method。一般用于取出可选对象的值来参与运算
        }
方法2 : loadData {[weak self] in
 self?.view.backgroundColor = UIColor.red //closure 对 self的引
}
}

前2天在改问题的时候,犯了一个错误:tableView的footerView添加了一个二维码设置居中的时候,始终是错开的。刚开始我还以为需要转换到同一坐标系的做法! 最后老铁提醒,原来是The superView is not same

mistake

把 imgeView.center = CGPointMake(footView.oa_width / 2.0,footView.oa_height / 2.0); 搞定

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

推荐阅读更多精彩内容

  • 86.复合 Cases 共享相同代码块的多个switch 分支 分支可以合并, 写在分支后用逗号分开。如果任何模式...
    无沣阅读 5,293评论 1 5
  • 介绍 Swift官方开发文档对于闭包的介绍是这样的:闭包是可以在代码中被传递和引用的功能性独立模块。Swift 中...
    Latte_Bear阅读 4,322评论 0 1
  • 以下翻译自Apple官方文档,结合自己的理解记录下来。翻译基于 swift 3.0.1 原文地址 Closure...
    艺术农阅读 5,526评论 0 3
  • 今天的博客算是比较基础的,还是那句话,基础这东西在什么时候都是最重要的。说到函数,只要是写过程序就肯定知道函数是怎...
    攞你命3OOO阅读 3,696评论 0 1
  • 今天看了20页的书 侦探依旧很忙 这次是一个黑帮老大之死 期待ing
    问求阅读 1,085评论 0 0