如你所能预计到的一门基于 C 构建的语言,Objective-C 身上所有的毒疣子都有。为了将关键词和类型同C的类型作区分,Objective-C 使用@符号引入了新的关键词。因为 Swift 不是基于C构建的,它同意了所有的关键词,并将 Objective-C 类型和对象相关的关键词前面大量的@符号移除了.
Swift 丢弃了遗留下来的约定。因而你不再需要行尾的分号,以及 if/else 语句中围绕条件表达式的括弧。另外一个大变化就是方法的调用不再互相嵌套成中括号的深坑 -- 再见吧,[[[ ]]]。Swift 中的方法和函数的调用使用行业内标准的在一对括弧内使用逗号分隔的参数列表。这样做的结果就是一种带有简化了句法和语法的更加干净有表现力的语言。
除了其它当代流行的编程语言之外,Swift 更像是自然的英语了。这种可读性是的其很容易能被其它来自 JavaScript,Java,Python,C#,以及 C++ 的开发者纳入到他们的工具链之中 -- 一点也不像 Objective-C 这只笨笨的黄小鸭。
在 Objective-C 的传统中, 如果某个值返回自一个方法, (使用注释以及方法的命名约定来)说明指针变量被返回的行为是程序员的责任.在 Swift 中, 可选类型和值类型使得方法定义中值是否存在,或者其有可能是可选的(即值可能存在也可能为nil),这些问题都是很明确清楚的.
为了提供对行为的预测,Swift会在nil可选值被使用时触发一次运行时崩溃。 崩溃提供的就是一种一致的行为,它能减轻修复bug过程的压力,因为它会直白地强制让程序员修复好这个问题. Swift 运行时崩溃的时候会停在nil可选值被使用到的那行代码处。这就意味着bug能更早的被修复,并能在Swift代码中被完全的规避掉.
Swift 以一种 Objective-C 从未有过的方式进行了统一。对自动引用计数 (ARC) 的支持是在整个过程化的和面向对象的代码路径上完成的。在。Objective-C。中, ARC 在 Cocoa API 和面向对象代码中获得支持;然而它并不支持过程式的 C 语言代码和像 Core Graphics 这样的 API。这意味着在使用 Core Graphics API 以及其它 iOS 上的底层 API 时,内存管控的处理都是程序员的责任。程序员在 Objective-C 上会遇到的大量内存溢出问题在 Swift 上是不可能的。
从丢弃 Objective-C 赖以构建的传统语言开始,一大堆变化让 Swift 超越了 Objective-C。Apple 并没有丢弃 Cocoa—— 这是他们的用于创建苹果风格体验的 API 和代码库——而是提供了一个完整功能的等价物,使得同支持 Force Touch 或者 Taptic Feedback 这类特性的新 API 交互起来更加简单。
使用 Swift,程序员只要维护原来一半量的代码文件,手动的代码同步工作为零,标点输入出错的概率也远远低于以前 -- 这样就能腾出更多的时间写高质量的代码。通过使用可选类型 —— 一种针对返回或不返回值的编译时安全机制,而返回值是同步操作、网络失效时无效的用户输入以及数据验证错误发生时普遍会遇到的问题。ARC 在 Swift 中对过程式 C 风格的代码,还有苹果公司 Cocoa 框架使用的面向对象代码都进行了统一。
开发者会发现他们写的 Swift 比较少,而现代的编程语言特性则支持着他们行行代码都保持更多的可读性。随着其不断发展,Swift 会保持整个苹果公司的生态系统在编程领域的先进性,这都要感谢 iOS 和 Swift 中对动态库的支持。开源项目、第三方 SDK 以及框架可以更容易的集成进家居自动化设备以及社交服务中,不会有编译时间的增长。Swift 在某些算法的速度上几乎与 C++ 一样的快,而最新版的Xcode 6.3 和 Swift 1.2 则在这一起跑线上把目标指向更多的性能优化。