1、标记MARK、TODO、FIXME
// MARK: 类似于OC中的 #pragma mark
// MARK: - 类似于OC中的 #pragma mark -
// TODO: 用于标记未完成的任务
// FIXME: 用于标记待修复的问题
2、条件编译
// 操作系统: macOS\iOS\tvOS\watchOS\Linux\Android\Windows\FreeBSD
#if os(macOS) || os(iOS)
// CPU架构:i386\x86_64\arm\arm64
#elseif arch(x86_64) || arch(arm64)
// swift版本
#elseif swift(<5) && swift(>=3)
// 模拟器
#elseif targetEnvironment(simulator)
// 可以导入某模块
#elseif canImport(Foundation)
#else
#endif
3、log日志打印
func log<T>(_ msg: T, file: NSString = #file, line: Int = #line, fn: String=#function) {
#if DEBUG
let prefix = "\(file)_\(line)_\(fn):"
print(prefix, msg)
#endif
}
4、系统版本检查
if #available(iOS 10, macOS 10.12, *) {
// 对iOS平台,只有在iOS10以上版本执行
// 对macOS平台,只有在macOS 10.12及以上版本执行
// 最后的*表示在其他所有平台都执行
}
5、API可用性说明
@available(iOS 10, macOS 10.15, *)
class Person { }
struct Student {
#warning("undo")
@available(*, unavailable, renamed: "study")
func study_() {}
func study() {}
@available(iOS, deprecated: 11)
@available(macOS, deprecated: 10.12)
func run() {}
}