美文网首页
Swift 3 新特性

Swift 3 新特性

作者: GloryMan | 来源:发表于2018-01-09 15:01 被阅读2次

    title: Swift 3 新特性
    date: 2016-10-13 17:17:05
    categories:

    • Code
    • iOS
      tags:
      • Swift 3

    Swift 3 新特性

    针对swift 2 做的修改在这里记录一下,方便自己查阅

    • 新增访问级别 fileprivate

      1.公开(public)
      2.内部(internal)
      3.文件外私有(fileprivate)
      4.私有(private) 只能在本类中使用

    • 移除 ++ 和 --
      取而代之,以后的写法就只有一种 +=、-=。
      同时影响到的是 for-loops C 风格的循环

          for index in 1...5 {
              print(index)
          }     
          for index1 in 1..<5 {
              print(index1)
          }
          
          let array:[String] = ["1","2","3","4","5"]
          for item in array {
              print(item)
          }
          let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
          for (animalName, legCount) in numberOfLegs {
              print("\(animalName)s have \(legCount) legs")
          }
      
      
    • 从函数参数中移除let var

      func double(let input:Int) -> Int {
          var localInput = input
          localInput = localInput * 2
          return localInput
      }
      // 这是swift 2 中还可以这样用,但是到swift 3中就不能用了,只能用上面个的格式(也有例外如下)。
      func double(var input:Int) -> Int {
          input = input * 2
          return input
      }
      
    • 将 inout 声明调整为类型修饰

      // 修改传入参数的值,禁止拷贝的发声
          func double(input: inout Int) {
              input = input * 2
          }
          
          // 修改传入的参数 不需要再创建一个局部变量修改
          var cellIndex = 1
          print("cellIndex change before = \(cellIndex)") // 1
          test(input: &cellIndex)
          print("cellIndex change after = \(cellIndex)") // 2
      
      
    • 将Objective-C 的selector 变为方法的引用

      // 必须要指明我们需要调用的是哪个方法,
      // 要做的就是要明确指明需要调用的是哪个类,
      // 并且指明要接受的参数标签是什么
      #selector(callbackMethod)
      #selector(MyClass.callbackMethod)
      #selector(MyClass.callbackMethod(with:))
      
    • 在实现枚举实例成员的时候,需要加上左前缀点

      enum Currency {
      // 如果作为属性声明,那么前面首字母改成小写样式
      case dollars
      case euros
      case pounds
      case yen
      
      var symbol: String {
              switch self {
              case .dollars:
                  return "$"
              default:
                  return "I don't know"
              }
          }
      }
      
    • 可以在 case 标签后添加多个关联值变量

      enum MyEnum {
          case case1(Int, Float)
          case case2(Float, Int)
      }
      
      switch value {
      case let .case(x, 2), let .case2(2, x):
          print(x)
      case .case1, .case2:
          break
      }
      
    • 允许使用(绝大多数)关键词作为参数标签了

      calculateRevenue(for sales: Int, in currency: Currency)
      
    • 将所有的参数标签进行一枝花,包括首标签
      你若不想显示出来 还是可以使用下划线 _ 来将其隐藏掉

      // Swift 3.0
      func increase(ourNumber: Int, delta: Int) -> Int {
      }
      increase(ourNumber: 6, delta: 3)
      

    相关文章

      网友评论

          本文标题:Swift 3 新特性

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