Swift 3.0 + xcode 8新特性

作者: ShiyongTan | 来源:发表于2016-07-13 11:52 被阅读620次
    1. ++ , -- 操作符更改成 += 1,-= 1;
      for 循环 :
      for(int i = 0 ; i < 100 ; i++){} 改成 for in:
      for i in 1...100 {} 或者改成 for-each 循环(闭包)
      (1...100).forEach { print( $0) }
      2.Currying 移除柯里化函数:
      func foo(x:Int)(y: Int)
      3.移除变量参数:
      func 中不再允许声明var 参数:
      func 用参数变量(var i: Int)//不会改变调用者的变量, 只在函数中有效
      如果一定要观察调用者变量的变化情况
      func 用inout变量(inout i:Int)//会改变调用者的变量,可以观察
      4.函数调用第一个参数必须加标签
      之前,函数调用可以不加第一个参数标签
      func foo(x:Int,y:Int)
      foo(1,y:2)
      Swift 3, 函数调用必须要加第一个参数的标签
      func foo(x:Int, y:Int)
      foo(x:1,y:2)
      如果swift的代码是 3.0之前写的, 不想每个调用方法去添加缺少的参数, 可以吧方法的参数改成省略: fun foo(_ x:Int, y:Int) 调用方法可以使用 foo(1,y:2)
      5.Selector, KeyPath 不再以String的形式出现
      给一个Button实例增加一个单机方法:
      aButton.addTarget(...,action:“tap”,…) 改写成:
      aButton.addTarget(...,action:#selector(self.tap()),…)
      获取一个Student类的变量girlFriendName:
      aStudent.valueForKeyPath(“girlFriendName”)
      aStudent.value (forKeyPath: #keyPath(Student.girlFriendName))
      6.去掉NS前缀
      去除NS前缀的类型
      提升的类型,完整列表(https://github.com/apple/swift-evolution/blob/master/proposals/0086-drop-foundation-ns.md)
      7.圆周率
      MI_PI:原来使用
      .pi: swift 3使用
      Float.pi
      Double.pi
      CGFloat.pi
      8.GCD
      从C式的面向过程 到 Swift式的面向对象用法
      let queue = dispatch_queue_create( "com.xxx.xxxx", nil)
      dispatch_async(queue) {
      print("Swift 2.2的GCD 队列")
      }

        let queue = DispatchQueue(label: "com.xxx.xxxx")
        queue.async {
               print(“Swift 3 中的GCD队列")
         }
      

    9.枚举成员首字母小写
    .Add 到.add
    .CGColor 到.cgColor
    .TouchUpInside 到.touchUpInside
    .FillStroke 到.fillStroke 等等
    10.允许(大部分)关键字作为成员引用
    enum UITableViewCellStyle : Int {
    case `default`
    case value1
    case value2
    case subtitle
    }
    let cell = UITableViewCell(style: .default, reuseIdentifier: nil) swift 2.2
    let cell = UITableViewCell(style: .default, reuseIdentifier: nil) swift 3
    11.Swift调用OC API更Swift ①规则
    let searchText= userInput.stringByTrimmingCharactersInSet( NSCharacterSet.whitespaceAndNewlineCharacterSet()) swift 2.2
    let searchText= userInput.trimming (.whitespaceAndNewlines)
    大致规则:
    尽量简短的、更Swift式的枚举、方法名,在3个单词以内为佳。
    去除类型名称中的重复单词(噪音)
    增加默认参数
    增加第一个参数标签
    在布尔属性前加前缀is
    非类型(值)声明一律小写
    让类遵循Comparable协议
    12.Swift方法的动词和名词
    名词-返回一个特定的值
    动词-执行一个特定的操作

               var *array = [1, 5, 3, 2, 4]
               let *sortedArray = array.sort()//动词 重新排序会改变 array
               print(sortedArray)
    
               var *array = [1, 5, 3, 2, 4]
               let *sortedArray = array.sorted()//名词 重新排序不会改变array
               print(sortedArray)
    

    13.xcode改进
    storyboard 无极缩放
    size class不再抽象话, 而是具体的设备
    签名改进

    相关文章

      网友评论

        本文标题:Swift 3.0 + xcode 8新特性

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