由于种种原因,简书等第三方平台博客不再保证能够同步更新,欢迎移步 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 新元素
-
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