| 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中的配置项保持一致
@@ -266,16 +267,16 @@
| 2014-12-2 |
-
+ -
在SourceKit中一些导致Crash的常见问题被修复,比如名字冲突和遗留废弃数据的问题等。
-
+ -
把纯正的Swift类对象实例赋值给AnyObject量不会再Crash了。
-
+ -
在泛型使用场景下,遵循了协议类要求的构造器方法或者类型方法可以直接调用继承类中的方法了。
-
+ -
修正了InterfaceBuild中如果图片名字含有“/”时,会在OSX10.10上Crash或者无法打开的问题
@@ -300,13 +301,13 @@
|
| 2014-10-16 |
@@ -331,7 +332,7 @@
|
| 2014-09-15 |
@@ -356,10 +357,10 @@
|
| 2014-09-09 |
@@ -384,18 +385,19 @@
|
| 2014-09-03 |
-
+ -
实现了内部库的修改和适配,主要包括如下:
1)大量内部类或者函数遵循Optional类型和协议
2)移除大部分函数返回类型隐式解封可选类型的使用
+
-
+ -
对于泛型的类库函数或接口统一从
T!更换为T?或T,这样使得语法更加严谨,明确了可能返回为空和不为空的情况
-
+ -
字符类型不能使用+运算法链接,可以以
String(C1)+String(2) 的方式实现字符间链接
-
+ -
重写了
Sort函数,解决了栈溢出的问题
@@ -418,20 +420,20 @@
|
| 2014-08-18 |
|
@@ -453,58 +455,58 @@
| 2014-08-04 |
@@ -527,49 +529,49 @@
|
| 2014-07-21 |
-
- 加入新的章节 权限控制(Access Control).
+ -
+ 加入新的章节 权限控制(Access Control).
-
+ -
更新了章节 字符串和字符(Strings and Characters) 用以表明,在Swift中,
Character 类型现在代表的是扩展字符集(extended grapheme cluster)中的一个Unicode,为此,新增了小节 Extended Grapheme Clusters 。同时,为小节 Unicode标量(Unicode Scalars) 和 字符串比较(Comparing Strings)增加了更多内容.
-
+ -
更新章节字符串字面量(String Literals):在一个字符串中,Unicode标量(Unicode scalars) 以
\u{n}的形式来表示, n 是一个最大可以有8位的16进制数(hexadecimal digits)
-
- NSString length 属性已被映射到Swift的内建 String类型。(注意,这两属性的类型是utf16Count,而非 utf16count).
+ -
+
NSString length 属性已被映射到Swift的内建 String类型。(注意,这两属性的类型是utf16Count,而非 utf16count).
-
+ -
Swift的内建
String 类型不再拥有 uppercaseString 和 lowercaseString 属性.其对应部分在章节 字符串和字符(Strings and Characters)已经被删除, 并且各种对应的代码用例也已被更新.
-
+ -
加入新的章节 没有外部名的构造器参数(Initializer Parameters Without External Names).
-
+ -
加入新的章节 Required构造器(Required Initializers).
-
+ -
加入新的章节 可选元祖(函数)返回类型 (Optional Tuple Return Types).
-
+ -
更新章节 类型标注(Type Annotations) :多个相关变量可以用“类型标注”(type annotaion)在同一行中声明为同一类型。
-
+ -
@optional, @lazy, @final, @required 等关键字被更新为 optional, lazy, final, required 参见声明修饰符(Declaration Modifiers).
-
+ -
更新整本书 —— 引用
..< 作为区间运算符(Half-Open Range Operator) (取代原先的.. ).
-
- 更新了小节 读取和修改字典(Accessing and Modifying a Dictionary): Dictionary 现在早呢更加了一个 Boolean型的属性: isEmpty
+ -
+ 更新了小节 读取和修改字典(Accessing and Modifying a Dictionary):
Dictionary 现在早呢更加了一个 Boolean型的属性: isEmpty
-
+ -
解释了哪些字符(集)可被用来定义自定义操作符 (Custom Operators)
-
+ -
nil 和布尔运算中的 true 和 false 现在被定义为字面量Literals.
- |
+
@@ -589,30 +591,31 @@
| 2014-07-7 |
|
+
@@ -632,9 +635,10 @@
| 2014-07-7 |
-
+ -
发布新的文档用以详述Swift - 苹果公司针对iOS和OS X应用的全新开发语言
+
|
@@ -654,11 +658,11 @@
| 2014-06-3 |
-
+ -
苹果全球开发者大会WWDC2014召开,发布了苹果最新的开发语言Swift,并释放出XCode6 Beta1版本
+
|
-
diff --git a/source/chapter2/03_Strings_and_Characters.md b/source/chapter2/03_Strings_and_Characters.md
index 676b404d..a94ad3ba 100755
--- a/source/chapter2/03_Strings_and_Characters.md
+++ b/source/chapter2/03_Strings_and_Characters.md
@@ -113,14 +113,14 @@ Swift 默认字符串拷贝的方式保证了在函数/方法中传递的是字
您可通过`for-in`循环来遍历字符串中的`characters`属性来获取每一个字符的值:
```swift
-for character in "Dog!🐶".characters {
+for character in "Dog!�".characters {
print(character)
}
// D
// o
// g
// !
-// 🐶
+// �
```
`for-in`循环在 [For Loops](./05_Control_Flow.html#for_loops) 中进行了详细描述。
@@ -133,10 +133,10 @@ let exclamationMark: Character = "!"
字符串可以通过传递一个值类型为`Character`的数组作为自变量来初始化:
```swift
-let catCharacters: [Character] = ["C", "a", "t", "!", "🐱"]
+let catCharacters: [Character] = ["C", "a", "t", "!", "�"]
let catString = String(catCharacters)
print(catString)
-// 打印输出:"Cat!🐱"
+// 打印输出:"Cat!�"
```
@@ -205,7 +205,7 @@ Swift 的`String`和`Character`类型是完全兼容 Unicode 标准的。
### Unicode 标量(Unicode Scalars)
Swift 的`String`类型是基于 *Unicode 标量* 建立的。
-Unicode 标量是对应字符或者修饰符的唯一的21位数字,例如`U+0061`表示小写的拉丁字母(`LATIN SMALL LETTER A`)("`a`"),`U+1F425`表示小鸡表情(`FRONT-FACING BABY CHICK`) ("`🐥`")。
+Unicode 标量是对应字符或者修饰符的唯一的21位数字,例如`U+0061`表示小写的拉丁字母(`LATIN SMALL LETTER A`)("`a`"),`U+1F425`表示小鸡表情(`FRONT-FACING BABY CHICK`) ("`�`")。
> 注意:
> Unicode *码位(code poing)* 的范围是`U+0000`到`U+D7FF`或者`U+E000`到`U+10FFFF`。Unicode 标量不包括 Unicode *代理项(surrogate pair)* 码位,其码位范围是`U+D800`到`U+DFFF`。
@@ -229,7 +229,7 @@ let wiseWords = "\"Imagination is more important than knowledge\" - Einstein"
// "Imageination is more important than knowledge" - Enistein
let dollarSign = "\u{24}" // $, Unicode 标量 U+0024
let blackHeart = "\u{2665}" // ♥, Unicode 标量 U+2665
-let sparklingHeart = "\u{1F496}" // 💖, Unicode 标量 U+1F496
+let sparklingHeart = "\u{1F496}" // �, Unicode 标量 U+1F496
```
@@ -272,7 +272,7 @@ let enclosedEAcute: Character = "\u{E9}\u{20DD}"
```swift
let regionalIndicatorForUS: Character = "\u{1F1FA}\u{1F1F8}"
-// regionalIndicatorForUS 是 🇺🇸
+// regionalIndicatorForUS 是 ��
```
@@ -281,7 +281,7 @@ let regionalIndicatorForUS: Character = "\u{1F1FA}\u{1F1F8}"
如果想要获得一个字符串中`Character`值的数量,可以使用字符串的`characters`属性的`count`属性:
```swift
-let unusualMenagerie = "Koala 🐨, Snail 🐌, Penguin 🐧, Dromedary 🐪"
+let unusualMenagerie = "Koala �, Snail �, Penguin �, Dromedary �"
print("unusualMenagerie has \(unusualMenagerie.characters.count) characters")
// 打印输出 "unusualMenagerie has 40 characters"
```
@@ -512,10 +512,10 @@ Swift 提供了几种不同的方式来访问字符串的 Unicode 表示形式
* UTF-16 代码单元集合 (利用字符串的`utf16`属性进行访问)
* 21位的 Unicode 标量值集合,也就是字符串的 UTF-32 编码格式 (利用字符串的`unicodeScalars`属性进行访问)
-下面由`D``o``g``‼`(`DOUBLE EXCLAMATION MARK`, Unicode 标量 `U+203C`)和`🐶`(`DOG FACE`,Unicode 标量为`U+1F436`)组成的字符串中的每一个字符代表着一种不同的表示:
+下面由`D``o``g``‼`(`DOUBLE EXCLAMATION MARK`, Unicode 标量 `U+203C`)和`�`(`DOG FACE`,Unicode 标量为`U+1F436`)组成的字符串中的每一个字符代表着一种不同的表示:
```swift
-let dogString = "Dog‼🐶"
+let dogString = "Dog‼�"
```
@@ -526,16 +526,16 @@ let dogString = "Dog‼🐶"
其为`String.UTF8View`类型的属性,`UTF8View`是无符号8位 (`UInt8`) 值的集合,每一个`UInt8`值都是一个字符的 UTF-8 表示:
-
+
| Character |
D U+0044 |
o U+006F |
g U+0067 |
- ‼ U+203C |
- 🐶 U+1F436 |
+ ‼ U+203C |
+ � U+1F436 |
-
- UTF-8 Code Unit |
+
+ UTF-8 Code Unit |
68 |
111 |
103 |
@@ -548,7 +548,7 @@ let dogString = "Dog‼🐶"
182 |
- | Position |
+ Position |
0 |
1 |
2 |
@@ -583,16 +583,16 @@ print("")
其为`String.UTF16View`类型的属性,`UTF16View`是无符号16位 (`UInt16`) 值的集合,每一个`UInt16`都是一个字符的 UTF-16 表示:
-
+
| Character |
D U+0044 |
o U+006F |
g U+0067 |
‼ U+203C |
- 🐶 U+1F436 |
+ � U+1F436 |
-
- UTF-16 Code Unit |
+
+ UTF-16 Code Unit |
68 |
111 |
103 |
@@ -601,7 +601,7 @@ print("")
56374 |
- | Position |
+ Position |
0 |
1 |
2 |
@@ -638,16 +638,16 @@ print("")
-
+
| Character |
D U+0044 |
o U+006F |
g U+0067 |
‼ U+203C |
- 🐶 U+1F436 |
+ � U+1F436 |
-
- UTF-16 Code Unit |
+
+ UTF-16 Code Unit |
68 |
111 |
103 |
@@ -655,7 +655,7 @@ print("")
128054 |
- | Position |
+ Position |
0 |
1 |
2 |
@@ -688,5 +688,5 @@ for scalar in dogString.unicodeScalars {
// o
// g
// ‼
-// 🐶
+// �
```
diff --git a/source/chapter2/23_Generics.md b/source/chapter2/23_Generics.md
index 2d34fe26..360458e0 100644
--- a/source/chapter2/23_Generics.md
+++ b/source/chapter2/23_Generics.md
@@ -228,6 +228,7 @@ let fromTheTop = stackOfStrings.pop()
```
下图展示了如何从栈中pop一个值的过程:
+

diff --git a/source/chapter3/02_Lexical_Structure.md b/source/chapter3/02_Lexical_Structure.md
index c2acd335..1be68adc 100755
--- a/source/chapter3/02_Lexical_Structure.md
+++ b/source/chapter3/02_Lexical_Structure.md
@@ -33,7 +33,7 @@ Swift 的“词法结构(*lexical structure*)”描述了能构成该语言
标识符(*identifiers*)可以由以下的字符开始:大写或小写的字母 `A` 到 `Z`、下划线 `_`、基本多文种平面(*Basic Multilingual Plane*)中的 Unicode 非组合字符以及基本多文种平面以外的非专用区(*Private Use Area*)字符。首字符之后,允许使用数字和 Unicode 字符组合。
-使用保留字(*reserved word*)作为标识符,需要在其前后增加反引号 `` `。例如,`class` 不是合法的标识符,但可以使用 \`class\`。反引号不属于标识符的一部分,\`x\` 和 `x` 表示同一标识符。
+使用保留字(*reserved word*)作为标识符,需要在其前后增加反引号 \`。例如,`class` 不是合法的标识符,但可以使用 \`class\`。反引号不属于标识符的一部分,\`x\` 和 `x` 表示同一标识符。
闭包(*closure*)中如果没有明确指定参数名称,参数将被隐式命名为 `$0`、`$1`、`$2`等等。 这些命名在闭包作用域范围内是合法的标识符。
diff --git a/source/chapter3/06_Attributes.md b/source/chapter3/06_Attributes.md
index 97013bac..21f5b989 100755
--- a/source/chapter3/06_Attributes.md
+++ b/source/chapter3/06_Attributes.md
@@ -207,14 +207,14 @@ Interface Builder特性是Interface Builder用来与Xcode同步的声明特性
该特性用于修饰函数或方法的类型,表明该函数或方法不会返回到它的调用者中去。你也可以用它标记函数或方法的声明,表示函数或方法的相应类型,`T`,是`@noreturn T`。
> 特性语法
-> *特性* → **@** [*特性名*](#attribute_name) [*特性参数子句*](#attribute_argument_clause) _可选_
+> *特性* → **@** [*特性名*](#attribute_name) [*特性参数子句*](#attribute_argument_clause) (可选)
> *特性名* → [*标识符*](02_Lexical_Structure.html#identifiers)
-> *特性参数子句* → **(** [*平衡令牌列表*](#balanced_tokens) _可选_ **)**
-> *特性(Attributes)列表* → [*特色*](#attribute) [*特性(Attributes)列表*](#attributes) _可选_
-> *平衡令牌列表* → [*平衡令牌*](#balanced_token) [*平衡令牌列表*](#balanced_tokens) _可选_
-> *平衡令牌* → **(** [*平衡令牌列表*](#balanced_tokens) _可选_ **)**
-> *平衡令牌* → **[** [*平衡令牌列表*](#balanced_tokens) _可选_ **]**
-> *平衡令牌* → **{** [*平衡令牌列表*](#balanced_tokens) _可选_ **}**
+> *特性参数子句* → **(** [*平衡令牌列表*](#balanced_tokens) (可选) **)**
+> *特性(Attributes)列表* → [*特色*](#attribute) [*特性(Attributes)列表*](#attributes) (可选)
+> *平衡令牌列表* → [*平衡令牌*](#balanced_token) [*平衡令牌列表*](#balanced_tokens) (可选)
+> *平衡令牌* → **(** [*平衡令牌列表*](#balanced_tokens) (可选) **)**
+> *平衡令牌* → **[** [*平衡令牌列表*](#balanced_tokens) (可选) **]**
+> *平衡令牌* → **{** [*平衡令牌列表*](#balanced_tokens) (可选) **}**
> *平衡令牌* → **任意标识符, 关键字, 字面量或运算符**
> *平衡令牌* → **任意标点除了(, ), [, ], {, 或 }**
diff --git a/source/chapter4/02_Type_Custom.md b/source/chapter4/02_Type_Custom.md
index 56ab7f12..b7d463b5 100644
--- a/source/chapter4/02_Type_Custom.md
+++ b/source/chapter4/02_Type_Custom.md
@@ -170,7 +170,8 @@ Program ended with exit code: 0
- 如果小伙伴们现在用的是Beta版的Xcode,注意苹果官方Blog中,在代码第17行如果在Xcode Beta4下是错误的,这里的协议是,LogicValue而不是BooleanVue,所以记得看错误提示才是好习惯。
- 注意代码第34行,完美支持if判断,且输出结果为“老码请你吃火锅”,老码也是说说而已,请不要当真。
-
+
+
####支持兼容各们各派的类型
小伙伴们,江湖风险,门派众多,老码有自己的OCBool类型,可能嵩山少林有自己的SSBool类型,甚至连郭美美都可能有自己的MMBool类型,所以OCBool必须能够识别这些类型,这些各门各派的类型,只要支持LogicValue协议,就应该可以被识别,看老码怎么做,
|