mirror of
https://github.com/jaywcjlove/reference.git
synced 2025-08-22 22:16:14 +08:00
doc: update docs/swift.md
This commit is contained in:
@@ -1859,7 +1859,9 @@ extension UIColor {
|
|||||||
return objc_getAssociatedObject(self, &fuchsiaKey) as? UIColor
|
return objc_getAssociatedObject(self, &fuchsiaKey) as? UIColor
|
||||||
}
|
}
|
||||||
set {
|
set {
|
||||||
objc_setAssociatedObject(self, &fuchsiaKey, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
|
objc_setAssociatedObject(self
|
||||||
|
, &fuchsiaKey, newValue
|
||||||
|
, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1961,7 +1963,7 @@ print(floatBox.square()) // 输出 25.0
|
|||||||
|
|
||||||
为泛型类型创建别名`typealias`,这样可以给泛型类型起一个更具体的名字,使得代码更加清晰易懂
|
为泛型类型创建别名`typealias`,这样可以给泛型类型起一个更具体的名字,使得代码更加清晰易懂
|
||||||
|
|
||||||
- 示例1
|
#### 示例1
|
||||||
|
|
||||||
```swift
|
```swift
|
||||||
// 定义一个泛型类型别名 'IntBox'
|
// 定义一个泛型类型别名 'IntBox'
|
||||||
@@ -1973,7 +1975,7 @@ print(intBox.value) // 输出 42
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
- 示例2
|
#### 示例2
|
||||||
|
|
||||||
```swift
|
```swift
|
||||||
// 定义一个泛型类型别名 'StringBox',其中 T 被约束为 String
|
// 定义一个泛型类型别名 'StringBox',其中 T 被约束为 String
|
||||||
@@ -2001,7 +2003,8 @@ class SimpleStorage<T>: Storage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func retrieve() -> T? {
|
func retrieve() -> T? {
|
||||||
return items.isEmpty ? nil : items.removeLast()
|
return items.isEmpty
|
||||||
|
? nil : items.removeLast()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2011,6 +2014,87 @@ print(intStorage.retrieve() ?? "Empty")
|
|||||||
// 打印: 42
|
// 打印: 42
|
||||||
```
|
```
|
||||||
|
|
||||||
|
命令工具
|
||||||
|
---
|
||||||
|
|
||||||
|
### 工具比对
|
||||||
|
<!--rehype:wrap-class=col-span-2-->
|
||||||
|
|
||||||
|
工具 | 功能 | 使用场景
|
||||||
|
:-- | :-- | :--
|
||||||
|
`swift` | 交互式执行器 / 脚本运行器 | 快速测试、运行脚本
|
||||||
|
`swiftc` | 编译器 | 编译源码为可执行文件
|
||||||
|
`swift-inspect` | 模块/符号分析工具 | 检查模块结构/调试工具输出
|
||||||
|
<!--rehype:className=show-header left-align-->
|
||||||
|
|
||||||
|
|
||||||
|
### swift — 脚本执行 & REPL
|
||||||
|
<!--rehype:wrap-class=row-span-3-->
|
||||||
|
|
||||||
|
命令 | 说明
|
||||||
|
:-- | :--
|
||||||
|
`swift` | 启动交互式环境(REPL)
|
||||||
|
`swift my_script.swift` | 运行 Swift 脚本文件
|
||||||
|
`swift build` | 使用 SwiftPM 编译项目
|
||||||
|
`swift build --clean` | 清理构建缓存
|
||||||
|
`swift build --disable-sandbox` | 在禁用沙盒模式下构建(CI 用)
|
||||||
|
`swift run` | 构建并运行当前 SwiftPM 项目
|
||||||
|
`swift run --configuration release` | 以 release 模式构建并运行
|
||||||
|
`swift run --verbose` | 输出详细构建信息
|
||||||
|
`swift test` | 运行测试(SwiftPM 项目)
|
||||||
|
`swift test --enable-code-coverage` | 测试覆盖率(Xcode 项目)
|
||||||
|
`swift package resolve` | 解析依赖
|
||||||
|
<!--rehype:className=style-list-->
|
||||||
|
|
||||||
|
#### 创建项目
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ swift package init --type executable
|
||||||
|
$ swift package init --type library
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 项目信息
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# 查看项目描述
|
||||||
|
$ swift package describe
|
||||||
|
# 查看依赖树
|
||||||
|
$ swift package show-dependencies
|
||||||
|
# 导出 Package.swift 的 JSON 结构
|
||||||
|
$ swift package dump-package
|
||||||
|
```
|
||||||
|
|
||||||
|
### swiftc — 编译器命令
|
||||||
|
<!--rehype:wrap-class=col-span-2-->
|
||||||
|
|
||||||
|
命令 | 说明
|
||||||
|
:-- | :--
|
||||||
|
`swiftc main.swift` | 编译为默认名 `main` 的可执行文件
|
||||||
|
`swiftc main.swift -o myapp` | 编译为 `myapp` 可执行文件
|
||||||
|
`swiftc -c Foo.swift` | 编译为中间的 `.o` 文件
|
||||||
|
`swiftc Foo.swift Bar.swift -o app` | 编译多个文件成一个可执行文件
|
||||||
|
`swiftc -emit-library Foo.swift` | 编译为动态库 `.dylib`/`.so`
|
||||||
|
`swiftc -emit-module Foo.swift` | 仅生成 `.swiftmodule` 模块文件
|
||||||
|
`swiftc -emit-sil Foo.swift` | 输出 SIL(Swift Intermediate Language)
|
||||||
|
`swiftc -emit-assembly Foo.swift` | 输出汇编代码
|
||||||
|
`swiftc -emit-object Foo.swift` | 输出目标文件 `.o`
|
||||||
|
<!--rehype:className=show-header left-align-->
|
||||||
|
|
||||||
|
|
||||||
|
### swift-inspect
|
||||||
|
<!--rehype:wrap-class=col-span-2-->
|
||||||
|
|
||||||
|
命令 | 说明
|
||||||
|
:-- | :--
|
||||||
|
`swift-inspect MyApp` | 分析一个编译产物(如 `.app`、`.dylib`)
|
||||||
|
`swift-inspect --symbols MyModule.swiftmodule` | 查看模块的符号信息
|
||||||
|
`swift-inspect --help` | 查看所有可用选项
|
||||||
|
`swift-inspect --types MyApp` | 查看类型信息
|
||||||
|
`swift-inspect --protocols MyApp` | 查看协议实现
|
||||||
|
<!--rehype:className=show-header left-align-->
|
||||||
|
|
||||||
|
模块与符号分析工具(macOS 14+)
|
||||||
|
|
||||||
另见
|
另见
|
||||||
----
|
----
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user