Swift 之属性篇

Swift 中的属性和在 ObjC 中有所不同,具体表如下: 消除了诸如: atomic, nonatomic, readonly, weak, strong, assign, setter, getter, nullable, nonnull 等修饰符,但这些特性并未消失,而是通过其他途径简化这些特性对开发者带来的输入量。 内存管理 weak/strong/assign 取而代之的是 Swift 用自动内存管理取代了 weak, strong, assign 。 类等引用类型的变量,一律为 strong 类型,并且 Swift 自身摈除了循环引用的问题,省略了 weak。 结构,枚举,字符串,数字等值类型,传递方式为直接内存复制,考虑到效率也用到了CoW机制。 是否为空 nullable/nonnull通过 var / let…

Xcode11 与 SPM 项目的依赖和相互关系

SPM 是 Swift Package Manager 的简称,是Swift  开源组织推荐的轻量级项目管理工具。直到最近苹果 Xcode11 的发布,终于正式加入了对 SPM 的支持,为 Swift 的推广奠定了坚实的基础,Swift 官方一直维护着一个 Server side 的社区, 加上 TensorFlow 对 Swift 的支持,至此 Swift 已经具备统一移动端,服务端,机器学习三大主流应用方向的能力。 Xcode11 已经可以正式支持编辑运行 SPM 项目。Xcode11 可以为Xcode 标准项目引入 SPM 项目做为依赖。 要想有效使用 SPM 项目工具,还需要了解 SPM 的一些特性: SPM 支持 ObjC,…

使用 Swift Package Manager 管理 swift, cpp, c 和 objective-c 的混合编译

swift_packages creating-objc-cpp-packages-with-swift-package-manager Xcode11 开始已经支持 SPM 项目,同时还支持 Xcode 传统项目后面简称Xcode项目中引用 SPM 项目,不过目前只能引用远程仓库。 SPM 项目相对 Xcode 传统项目,要更加轻盈,通过一个 Package.swift 配置文件,完成整个 Package 的依赖,构建,目标管理工作,这一点是 Xcode 项目无法比拟的。 言归正传,回到 SPM 管理 多语言混合项目上来,首先说明一点 Swift 和其他语言混合开发的背景,Swift 能够直接调用的语言仅限于 Objective-C (后面简称Objc) 和 C ,并不包含 C++ ,但是通过 ObjC 和 C…

如何看懂 Swift 语言参考规范?

如何阅读语法规范箭头(->) 用来表示语法生成,可以读作“能由...组成”句法类别通过在语法生成规则两边用 斜体 字来表示文法单词和符号通过粗体字等宽字符,在语法生成规则右边表示另一种语法生成符,通过竖线来分隔。当一种生成符太长而不易读时,会被在新行中分拆成多个语法生成规则少数情况下,常规字体用来描述语法生成规则的右边内容可选句法种类和文法通过后跟下标 $_{opt}$ 表示getter-setter 块语法 getter-setter-block $\rightarrow$ {getter-clause setter-clause}$_{opt}$ 以上定义,表示 getter-setter 块能通过在封闭的括号中的 getter 闭包,加上一个可选的 setter 闭包,或 setter 闭包跟随一个 getter 闭包组成。以上的语法公式相当于下面的两个明确标明的语法公式。 GETTER-SETTER 块语法 getter-setter-block $\rightarrow$ { getter-clouse setter-clouse$_{opt}$ } getter-setter-block $\rightarrow$ { setter-clause getter-clause } 总结最后,…