《Swifter Tips》Notes

由于种种原因,等第三方平台博客不再保证能够同步更新,欢迎移步 GitHub:https://github.com/kingcos/Perspective/。谢谢!

Learn by coding.

Date Notes Swift Xcode
2017-04-08 首次提交 3.1 8.3
2018-01-11 Swift 4 Update 4.0.3 9.2

Preface

《Swifter Tips》是我在很早(大约 Swift 1.0)时就买入的一本电子书。也是在那个时候知道了喵神(@onevcat),从打印《Swifter Tips》的 Swift 2.0 版本,到现在看 Swift 3.0 版本,真的是感叹人的拖延症太可怕。为了保护版权,本文不会涉及书中的具体内容,只做我个人不熟悉部分的摘要,代码也经过了我的个人验证,且有所改动,适合搭配 Xcode 9.2 & Swift 4.0 食用。

  • 本文对应的 Swift 文件可以在 GitHub Gist 中查看:
    • Swift 新元素
    • 从 Objective-C/C 到 Swift
    • Swift 与开发环境及一些实践

Swift 新元素

  • mutating in Protocol
    • struct/enum 遵守的协议,方法需使用该修饰符,才可在其中改变自身的变量
  • precedencegroup & associativity & higherThan/lowerThan & prefix/postfix/infix
  • 字面量(Xcode 总是在这里崩溃,无法给出代码测试)LiteralType
  • indirect

从 Objective-C/C 到 Swift

  • swift_once_block_invoke
  • 条件编译
    • #if #elseif #else #endif
    • os(macOS/iOS/tvOS/watchOS/Linux/Android/Windows)
    • arch(x86_64/arm/arm64/i386)
    • swift(>=2.0)
    • DEBUG
    • 可使用 || 连接多个条件
    • #if FREE_VERSION
      • 免费版:Build Settings -> Swift Compiler - Custom Flags -> Other Swift Flags: 添加 -D FREE_VERSION
  • weak 弱引用
    • delegate
    • self 闭包
  • @autoreleasepool
  • COpaquePointer
  • KVO - slazyk/Observable-Swift
  • GNU C 声明扩展
  • @_silgen_name
  • Toll-Free Bridging & Unmanaged

Swift 与开发环境及一些实践

  • Swift REPL
  • debugPrint()
  • public func fatalError(_ message: @autoclosure () -> String = default, file: StaticString = #file, line: UInt = #line) -> Never
  • Framework
  • SwiftyJSON
  • 虚函数表(vtable)
  • #file #line #column #function
  • 溢出:&+ &- &* &/ &%
  • @testable import ...: XCTest access internal

Reference

  • Swifter - 100 个 Swift 必备 tips
  • @onevcat

也欢迎您关注我的微博@萌面大道V &

你可能感兴趣的:(《Swifter Tips》Notes)