美文网首页
Swift中的一等公民-函数(Func)

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

作者: 二先生Developer | 来源:发表于2017-08-25 18:58 被阅读46次
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); 搞定

相关文章

  • Swift学习笔记

    swift学习笔记01: “一等公民“ func & closure 先来几个函数: 在swift中,我们可以这样...

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

    函数的定义 无参数无返回值func callFunc(){print("func")}2.有参数无返回值func ...

  • Swift 基本语法(一)— 值类型

    Swift 与 OC 语言的区别 1.Swift 面对协议编程、 面向函数编程、面向对象编程。 函数成了一等公民...

  • Swift闭包和函数

    函数在Swift中只是一种特殊的闭包,闭包在Swift语言中是一等公民,支持闭包嵌套和闭包传递。Swift中的闭包...

  • Swift4 函数

    很多文章里都提及函数在Swift中一等公民,你是怎么认为的呢?我也不太懂,浅薄的印象就是函数在Swift中也是一种...

  • 第二章 一等函数与 Applicative 编程

    2.1 函数是一等公民 在 JavaScript 中,函数就是一等公民。 函数与数字一样,可以存储为变量 cons...

  • Go一个函数式编程小设计

    用map加func设计插件式的程序 巧妙了运用了函数在go中是“一等公民“”的特性。创建一个map,并将value...

  • Fluent Python笔记--一等函数

    Python中的函数是”一等公民“。所谓一等公民,含义是: 运行时创建; 能够赋值给变量; 能作为参数传给函数; ...

  • Swift 高阶函数 Map,Filter,Reduce

    一、关于闭包 Swift函数是一等公民,Swift一大特性就是使用简洁的语言去替代复杂的函数操作。所谓闭包就是自包...

  • swift逃逸和非逃逸闭包

    众所周知,函数和闭包是Swift语言中的一等公民,在程序中可以把它作为值存储起来,也作为参数传递给函数。 在Swi...

网友评论

      本文标题:Swift中的一等公民-函数(Func)

      本文链接:https://www.haomeiwen.com/subject/tbtsrxtx.html