Learn by coding.
- Info:
- Swift 3.1
- Xcode 8.3
- macOS 10.12.4
Preface
Swifter Tips 是我在很早(大约 Swift 1.0)时就买入的一本电子书。也是在那个时候知道了喵神,从打印 Swifter Tips 的 Swift 2.0 版本,到现在看 Swift 3.0 版本,真的是感叹人的拖延症太可怕。为了保护版权,本文不会涉及书中的具体内容,只做我个人不熟悉部分的摘要,代码也经过了我的个人验证,且有所改动,适合搭配 Xcode 8.3 & Swift 3.1 食用。
- 本文对应的 Swift 文件可以在 GitHub Gist 中查看:
Swift 新元素
-
mutating
in Protocol - 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