Swift 版本历史记录
翻译:成都老码团队翻译组-Arya
校对:成都老码团队翻译组-Oberyn
本页内容包括:
以下部分是针对XCode6每一次Beta版本直至正式版发布,Swift语法部分的更新归类
XCode6.4 Beta中Swift语法更新
注意:苹果在这个版本发布后没有及时的更新Swift Programming Language文档,以下是老码团队通过XCode6.4 Beta Release Note总结的更改说明:
XCode6.3中Swift语法更新
注意:苹果此时发布了统一的版本XCode6.3,其中将以前的XCode6.3 Beta系列版本合并, 而XCode6.3共计发布了4次Beta版本,老码团队通过Release Note总结的详细更改说明请参看:Swift语法更新记录表格
| 发布日期 |
语法变更记录 |
| 2015-4-8 |
Swift现在自身提供了一个Set集合类型,更多信息,请看集合
@autoclosure现在是一个参数声明的属性,而不是参数类型的属性。这里还有一个新的参数声明属性@noescape。更多信息,请看属性声明
对于类型属性和方法现在可以使用static关键字作为声明描述符,更多信息,请看类型变量属性
Swift现在包含一个as?和as!的向下可失败类型转换运算符。更多信息,请看协议遵循性检查
增加了一个新的指导章节,它是关于字符串索引的
从溢出运算符中移除了溢出除运算符(&/)和求余溢出运算符(&%)
更新了常量和常量属性在声明和构造时的规则,更多信息,请看常量声明
更新了字符串字面量中Unicode标量集的定义,请看字符串字面量中的特殊字符
更新了区间运算符章节来提示当半开区间运算符含有相同的起止索引时,其区间为空。
更新了闭包引用类型章节来澄清对于变量的捕获规则
更新了值溢出章节来澄清有符号整数和无符号整数的溢出行为
更新了协议声明章节来澄清协议声明时的作用域和成员
更新了捕获列表章节来澄清对于闭包捕获列表中的弱引用和无主引用的使用语法。
更新了运算符章节来明确指明一些例子来说明自定义运算符所支持的特性,如数学运算符,各种符号,Unicode符号块等
|
XCode6.2正式版中Swift语法更新
注意:苹果此时发布了统一的版本XCode6.2,其中将以前的XCode6.2 Beta系列版本合并
| 发布日期 |
语法变更记录 |
| 2015-02-09 |
在函数作用域中的常量声明时可以不被初始化,它必须在第一次使用前被赋值。更多的信息,请看常量声明
在构造器中,常量属性有且仅能被赋值一次。更多信息,请看在构造过程中给常量属性赋值
多个可选绑定现在可以在if语句后面以逗号分隔的赋值列表的方式出现,更多信息,请看可选绑定
一个可选链表达式必须出现在后缀表达式中
协议类型转换不再局限于@obj修饰的协议了
在运行时可能会失败的类型转换可以使用as?和as!运算符,而确保不会失败的类型转换现在使用as运算符。更多信息,请看类型转换运算符必
|
XCode6.2 Beta3中Swift语法更新
注意:苹果在这个版本发布后没有及时的更新Swift Programming Language文档,以下是老码团队通过XCode6.2 Beta3 Release Note总结的更改说明:
| 发布日期 |
语法变更记录 |
| 2014-12-19 |
在对Watch App做消息通知模拟调试时,第一个payload.apns文件将会被默认选择
在为Watch App使用asset catalog时,38mm和42mm尺寸的图片就会被使用
在做Watch App开发时,@IBAction属性支持WKInterfaceSwitch和WKInterfaceSlider Swift类型了
现在可以通过Device窗口安装,删除和访问App容器中的数据了。
|
XCode6.2 Beta2中Swift语法更新
注意:苹果在这个版本发布后没有及时的更新Swift Programming Language文档,以下是老码团队通过XCode6.2 Beta2 Release Note总结的更改说明:
XCode6.2 Beta1中Swift语法更新
注意:苹果在这个版本发布后没有及时的更新Swift Programming Language文档,以下是老码团队通过XCode6.2 Beta1 Release Note总结的更改说明:
| 发布日期 |
语法变更记录 |
| 2014-11-28 |
XCode6.2包含了iOS8.2 SDK,该SDK中包含WatchKit用来开发Apple Watch应用。
在工具集中增加了对WatchKit的支持:
1)UI设计工具增加了Apple Watch应用的界面组件,通知和小部件。
2)增加了调试和性能统计功能
3)增加Apple Watch应用的模拟器帮助调试应用功能
为了使Apple Watch应用能够正常工作,一些具体的参数必须设置:
1)WatchKit中扩展配置文件Info.plist中的NSExtensionAttributes配置项WKAppBundleIdentifier必须和WatchKit App中的通用配置文件中的属性CFBundleIdentifier项目保持一致。2)WatchKit中的CFBundleIdentifier配置项必须和WKCompanionAppBundleIdentifier中的配置项保持一致
|
XCode6.1.1中Swift语法更新
注意:苹果在这个版本发布后没有及时的更新Swift Programming Language文档,以下是老码团队通过XCode6.1.1 Release Note总结的更改说明:
| 发布日期 |
语法变更记录 |
| 2014-12-2 |
在SourceKit中一些导致Crash的常见问题被修复,比如名字冲突和遗留废弃数据的问题等。
把纯正的Swift类对象实例赋值给AnyObject量不会再Crash了。
在泛型使用场景下,遵循了协议类要求的构造器方法或者类型方法可以直接调用继承类中的方法了。
修正了InterfaceBuild中如果图片名字含有“/”时,会在OSX10.10上Crash或者无法打开的问题
|
XCode6.1中Swift语法更新
注意:苹果此时发布了统一的版本XCode6.1,其中将以前的XCode6.0.1和XCode6.1 Beta系列版本合并
XCode6.1 Beta2中Swift语法更新
注意:苹果此时发布了XCode6.0.1版本(也称为XCode6正式版),此版本用于iOS的开发,同时也发布子版本XCode6.1 Beta2,此版本为OSX开发做准备,以下所述的更改仅对XCode6.1 Beta2有效
XCode6.1 Beta1中Swift语法更新
注意:苹果此时发布了XCode6 GM版本,此版本用于iOS的开发,同时也发布子版本XCode6.1 Beta1,此版本为OSX开发做准备,以下所述的更改仅对XCode6.1 Beta1有效
XCode6 Beta7中Swift语法更新
注意:苹果在这个版本发布后没有及时的更新Swift Programming Language文档,以下是老码团队通过XCode Beta7 Release Note总结的更改说明:
| 发布日期 |
语法变更记录 |
| 2014-09-03 |
实现了内部库的修改和适配,主要包括如下:
1)大量内部类或者函数遵循Optional类型和协议
2)移除大部分函数返回类型隐式解封可选类型的使用
对于泛型的类库函数或接口统一从T!更换为T?或T,这样使得语法更加严谨,明确了可能返回为空和不为空的情况
字符类型不能使用+运算法链接,可以以String(C1)+String(2) 的方式实现字符间链接
重写了Sort函数,解决了栈溢出的问题
|
XCode6 Beta6中Swift语法更新
XCode6 Beta5中Swift语法更新
| 发布日期 |
语法变更记录 |
| 2014-08-04 |
可选类型(Optionals) 若有值时,不再隐式的转换为 true,同样,若无值时,也不再隐式的转换为 false, 这是为了避免在判别 optional Bool 的值时产生困惑。 替代的方案是,用== 或 != 运算符显式地去判断Optinal是否是 nil,以确认其是否包含值。
Swift新增了一个 Nil合并运算符(Nil Coalescing Operator) (a ?? b), 该表达式中,如果Optional a的值存在,则取得它并返回,若Optional a为nil,则返回默认值 b
更新和扩展 字符串的比较(Comparing Strings) 章节,用以反映和展示'字符串和字符的比较',以及'前缀(prefix)/后缀(postfix)比较'都开始基于扩展字符集(extended grapheme clusters)规范的等价比较.
现在,你可以通过 可选链(Optional Chaining)来:给属性设值,将其赋给一个下标脚注(subscript); 或调用一个变异(mutating)方法或运算符。对此,章节——通过可选链访问属性(Accessing Properties Through Optional Chaining)的内容已经被相应的更新。而章节——通过可选链调用方法(Calling Methods Through Optional Chaining中,关于检查方法调用是否成功的例子,已被扩展为展示如何检查一个属性是否被设值成功。
</li>
<li><p>
在章节可选链中,增加一个新的小节 <a href="https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/OptionalChaining.html#//apple_ref/doc/uid/TP40014097-CH21-XID_364">访问可选类型的下标脚注(Accessing Subscripts of Optional Type)</a>
</li>
<li><p>
更新章节 <a href="CollectionTypes.html#//apple_ref/doc/uid/TP40014097-CH8-XID_176" data-id="//apple_ref/doc/uid/TP40014097-CH8-XID_176">访问和修改数组(Accessing and Modifying an Array)</a> 以标示:从该版本起,不能再通过<code>+=</code> 运算符给一个数组添加一个新的项。. 对应的替代方案是, 使<code>append</code> 方法, 或者通过<code>+=</code>运算符来添加一个<b>只有一个项的数组</b>(single-item Array).</li>
<li><p>
添加了一个提示:在 <a href="https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/BasicOperators.html#//apple_ref/doc/uid/TP40014097-CH6-XID_126">范围运算符(Range Operators)</a>中,比如, <code>a...b</code> 和 <code>a..<b</code> ,起始值<code>a</code>不能大于结束值<code>b</code>.
</li>
<li><p>
重写了<a href="https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Inheritance.html#//apple_ref/doc/uid/TP40014097-CH17-XID_293">继承(Inheritance)</a> 这一章:删除了本章中关于构造器重写的介绍性报道;转而将更多的注意力放到新增的部分——子类的新功能,以及如何通过重写(overrides)修改已有的功能。另外,小节 <a href="https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Inheritance.html#//apple_ref/doc/uid/TP40014097-CH17-XID_301">重写属性的Getters和Setters(Overriding Property Getters and Setters)</a> 中的例子已经被替换为展示如何重写一个 <code>description</code> 属性. (而关于如何在子类的构造器中修改继承属性的默认值的例子,已经被移到 <a href="https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Inheritance.html#//apple_ref/doc/uid/TP40014097-CH17-XID_293">构造过程(Initialization)</a> 这一章.)
</li>
<li><p>
更新了 <a href="https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html#//apple_ref/doc/uid/TP40014097-CH18-XID_331">构造器的继承与重写(Initializer Inheritance and Overriding)</a> 小节以标示: 重写一个特定的构造器必须使用 <code>override</code> 修饰符.
</li>
<li><p>
更新 <a href="https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html#//apple_ref/doc/uid/TP40014097-CH18-XID_339"> Required构造器(Required Initializers)</a> 小节以标示:<code>required</code> 修饰符现在需要出现在所有子类的required构造器的声明中, 而required构造器的实现,现在可以仅从父类自动继承。
</li>
<li><p>
中置(Infix)的 <a href="https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AdvancedOperators.html#//apple_ref/doc/uid/TP40014097-CH27-XID_80">运算符函数(Operator Functions)</a> 不再需要<code>@infix</code> 属性.
</li>
<li><p>
<a href="https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/RevisionHistory.html#//apple_ref/doc/uid/TP40014097-CH40-XID_1631">前置和后置运算符(Prefix and Postfix Operators)</a>的<code>@prefix</code> 和 <code>@postfix</code> 属性,已变更为 <code>prefix</code> 和 <code>postfix</code> 声明修饰符(declaration modifiers).
</li>
<li><p>
增加一条注解:当Prefix和postfix运算符被作用于同一个操作数时,关于<a href="AdvancedOperators.html#//apple_ref/doc/uid/TP40014097-CH27-XID_81" data-id="//apple_ref/doc/uid/TP40014097-CH27-XID_81">前置和后置运算符(Prefix and Postfix Operators)</a>的顺序(postfix运算符会先被执行)
</li>
<li><p>
在运算符函数(Operator functions)中, <a href="https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AdvancedOperators.html#//apple_ref/doc/uid/TP40014097-CH27-XID_82" data-id="//apple_ref/doc/uid/TP40014097-CH27-XID_82">组合赋值运算符(Compound Assignment Operators)</a> 不再使用 <code>@assignment</code> 属性来定义函数.
</li>
<li><p>
在这个版本中,在定义<a href="https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AdvancedOperators.html#//apple_ref/doc/uid/TP40014097-CH27-XID_85">自定义操作符(Custom Operators)</a> 时,<b>修饰符(Modifiers)的出现顺序发生变化</b>。比如, 现在,你该编写 <code>prefix operator</code>, 而不是 <code>operator prefix</code>.
</li>
<li><p>
增加信息:关于<code>dynamic</code> 声明修饰符(declaration modifier),于章节 <a href="Declarations.html#//apple_ref/doc/uid/TP40014097-CH34-XID_705" data-id="//apple_ref/doc/uid/TP40014097-CH34-XID_705">声明修饰符(Declaration Modifiers)</a>.
</li>
<li><p>
增加信息:<a href="https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/LexicalStructure.html#//apple_ref/doc/uid/TP40014097-CH30-XID_886">字面量Literals</a> 的类型推导(type inference)
</li>
<li><p>
为章节<a href="https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/doc/uid/TP40014097-CH34-XID_597">Curried Functions</a>添加了更多的信息.
</li>
</ul>
</td>
|
XCode6 Beta4中Swift语法更新
XCode6 Beta3中Swift语法更新
XCode6 Beta2中Swift语法更新
XCode6 Beta1中Swift语法更新