Swift - 从2.2到3.0

这里是一些从2.2到3.0的笔记。
[Swift 3.0 Migration Guide] https://swift.org/migration-guide/

  • 指针
    1.UnsafePointer, UnsafeMutablePointer, AutoreleasingUnsafeMutablePointer, OpaquePointer, Selector, NSZone等指针属性不能为nil,如需为nil,必须是Optional;
    2.memory属性变为pointee;
    3.用Int(bitPattern: nullablePointer)来表示传给C语言的指针类型;
    4.引入 Unsafe[Mutable]RawPointer类型,用于安全地进行指针的类型转换
    5.COpaquePointer 现在重命名为 OpaquePointer

  • 集合类型
    1.Range<>.reversed 失效,如需实现相似功能,使用[].indices.reversed()方法;

  1. Index有很多方法都被挪去 Collection 类型里的方法,如 Collection.index(index, offsetBy: delta), Collection.index(index, offsetBy: delta, limitedBy: otherIndex), Collection.distance(from: index, to: otherIndex)等;
  • Swift Foundation
    1.使用struct 来构建Notification:static let MyNotification = Notification.Name("MyNotification");
    2.由于这些原来用 String 来表达的类型现被封装成 struct,在一些地方需要用.rawValue 来传参;
    3.如果需要使用 URL 相关的API,需要手动改写,Swift Migrator 不会帮你转换;
    4.原来的 (x as NSDate).earlierDate(y) 现在写成 x < y ? x : y;原来的 (x as NSDate).laterDate(y) 现在写成 x < y ? y : x;
  1. dispatch_once弃用,现在 lazily initialized 的闭包可以保证一次运行和线程安全;
    6.Closure 现在默认是non-escaping ,因此可能需要用到@escaping
    7.OC 的 id 类型现在是Any 类型

你可能感兴趣的:(Swift - 从2.2到3.0)