美文网首页
swift问题小结

swift问题小结

作者: yidezhang | 来源:发表于2020-06-12 11:41 被阅读0次
1.swift是面向对象还是函数式编程语言

swift是函数式也是面向对象的语言。
swift是面向对象语言,因为他支持类的封装、多态、继承。
swift是函数式语言,因为他支持map、reduce、filter、flatmap等去除中间状态、数学函数式的方法,更加强调运算结果而非过程。

2. swift中 class和struct区别

swift中 class是引用类型,struct是值类型。class在使用时是引用一个地址,使用一个指向,struct是当赋值和传递时候会进行值的复制。
另外class和struct的区别和联系

  • class可以继承,struct不可以

  • class类型转换可以在运行时检查和解释一个实例的类型

  • class 可以deinit一个对象

  • 类可以被多次引用

  • struct 先比来说结构小,适用于复制操作,相比于class对象引用 更加安全

  • struct不用担心内存泄漏或者多线程冲突。

  • struct和class 都可以使用protocol

3. 访问权限

Open, Public,Inernal,File-private,Private权限依次递减。

4. 关键词 strong,weak,unowned

strong,weak 和oc中作用一样
unowned和weak使用差别如下:

  • 当访问对象访问时候可能会被释放的时候使用weak
  • 当访问对象确定不可能被释放时候用unowned
    实际项目中多半用weak,相对安全。
4. 属性观察
  var title:String{
    willSet {
        //属性将要修改
    }
    willSet {
        //属性已经修改
    }
  }

其实就是oc里面的kvo 只不过把kvo里面的方法外化了

5. mutating

主要作用是定义 struct或者enum里面是否可以修改自己的成员变量,主要是protocol定义的时候

    protocol person{
        var name: String{get set}
    }
    struct devid: person{
          var name:String
          //下面这一句就应该加上mutating 表明此方法会修改成员变量
          mutating func changeName(name:String){
              self.name = name
          }
     }
6. swift实现|| 操作

主要是@autoclosure 他可以让left判断失效时候 走 else的时候再判断right是否有效 主要是考虑 如果表达式过于复杂 当left判断生效之后可以省略右边表达式的计算,节省资源。

  func || (left: Bool, right: @autoclosure()->Bool) ->Bool{
    if left{
      return true
    }else{
      return right()
    }
  }
7. 输入任意一个数,输出为输入整数+2

利用swift carraying特性

  func add(_ num:Int) -> (Int) ->Int{
    return {
        val in
        return num + val
      }
  }

  let addThree = add(3)
  print(addThree(5))

输出结果:8

相关文章

  • swift问题小结

    1.swift是面向对象还是函数式编程语言 swift是函数式也是面向对象的语言。swift是面向对象语言,因为他...

  • Swift 4.0 问题小结

    最近跟着刀哥用 Swift 写微博,顺便学习了一下 Swift 4.0 ,遇到了一些问题,特此小结,总结一下,供跟...

  • swift基础小结1

    swift基础小结 for 循环OC与Swift对比 While循环与downhill循环 OC与swift使用的...

  • swift-循环

    循环 OC风格的 for Swift风格的 for 阶段性小结Swift 中使用 in 关键字标示循环的范围0.....

  • Swift3.0 函数闭包与 Block

    最近新接手了一个Swift项目,花点时间做点小结,以做记录我的博客链接 Swift中定义一个基本函数 Swift ...

  • 3.Swift-循环

    OC风格的 for Swift风格的 for 阶段性小结Swift 中使用 in 关键字标示循环的范围0..<10...

  • Swift开发体验

    代码实现 对比与小结 Swift 文件都是以 .swift 结尾 没有 main.m 文件 代码全部都放在大括号里...

  • Swift 小结

    Selector Extension CoreText CTFrameCTLineCTRun: 是每一个相同属性字...

  • Swift小结

    懒加载 格式 lazy var 变量: 类型 = { 创建变量代码 }() 以 lazy var 开头,闭包末尾跟...

  • Swift小结

    基本语法: 定义变量和常量: let 和 var常量和变量的命名:你可以使用任何你喜欢的字符作为常量和变量名,包括...

网友评论

      本文标题:swift问题小结

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