diff --git a/source/README.md b/source/README.md index 9b5da07a..012d156c 100755 --- a/source/README.md +++ b/source/README.md @@ -75,4 +75,4 @@ Swift 2.0 参与者名单(按照章节顺序): - [wardenNScaiyi](https://github.com/wardenNScaiyi) - [miaosiqi](https://github.com/miaosiqi) -最后,感谢极客学院提供的wiki系统,在国内访问起来速度很快,优化后的样式看起来也更舒服。 \ No newline at end of file +最后,感谢[极客学院](http://wiki.jikexueyuan.com)提供的wiki系统,在国内访问起来速度很快,优化后的样式看起来也更舒服。 \ No newline at end of file diff --git a/source/chapter1/02_a_swift_tour.md b/source/chapter1/02_a_swift_tour.md index 6d91a479..dcfb2232 100755 --- a/source/chapter1/02_a_swift_tour.md +++ b/source/chapter1/02_a_swift_tour.md @@ -730,4 +730,4 @@ anyCommonElements([1, 2, 3], [3]) > 练习: > 修改`anyCommonElements(_:_:)`函数来创建一个函数,返回一个数组,内容是两个序列的共有元素。 -` `和``是等价的。 +``和``是等价的。 diff --git a/source/chapter1/03_revision_history.md b/source/chapter1/03_revision_history.md index d6bdfea0..c900048f 100644 --- a/source/chapter1/03_revision_history.md +++ b/source/chapter1/03_revision_history.md @@ -23,7 +23,7 @@ - [XCode6 Beta4 Swift语法文档更新](#xcode6_beta4) - [XCode6 Beta3 Swift语法文档更新](#xcode6_beta3) - [XCode6 Beta2 Swift语法文档更新](#xcode6_beta2) -- [XCode6 Beta1 Swift语法文档更新](#xcode6_beta1) +- [XCode6 Beta1 Swift语法文档更新](#xcode6_beta1) - XCode6下载: [老码云盘下载](http://pan.baidu.com/disk/home#from=share_pan_logo&path=%252F%25E8%2580%2581%25E7%25A0%2581%25E4%25BA%2591%25E7%259B%2598-XCode6%252FXCode6-Beta5) 以下部分是针对XCode6每一次Beta版本直至正式版发布,Swift语法部分的更新归类 @@ -44,7 +44,7 @@ 2015-04-13
    -
  • +

  • XCode6.4包含了对于构建和调试基于iOS8.4 App的支持
@@ -68,46 +68,47 @@ 2015-4-8
    -
  • - Swift现在自身提供了一个Set集合类型,更多信息,请看集合 +

  • + Swift现在自身提供了一个Set集合类型,更多信息请看集合 +
  • -
  • +

  • @autoclosure现在是一个参数声明的属性,而不是参数类型的属性。这里还有一个新的参数声明属性@noescape。更多信息,请看属性声明
  • -
  • +

  • 对于类型属性和方法现在可以使用static关键字作为声明描述符,更多信息,请看类型变量属性
  • -
  • +

  • Swift现在包含一个as?as!的向下可失败类型转换运算符。更多信息,请看协议遵循性检查
  • -
  • +

  • 增加了一个新的指导章节,它是关于字符串索引
  • -
  • - 从溢出运算符中移除了溢出除运算符(&/)和求余溢出运算符(&%) +

  • + 从溢出运算符中移除了溢出除运算符和求余溢出运算符
  • -
  • +

  • 更新了常量和常量属性在声明和构造时的规则,更多信息,请看常量声明
  • -
  • +

  • 更新了字符串字面量中Unicode标量集的定义,请看字符串字面量中的特殊字符
  • -
  • +

  • 更新了区间运算符章节来提示当半开区间运算符含有相同的起止索引时,其区间为空。
  • -
  • +

  • 更新了闭包引用类型章节来澄清对于变量的捕获规则
  • -
  • +

  • 更新了值溢出章节来澄清有符号整数和无符号整数的溢出行为
  • -
  • +

  • 更新了协议声明章节来澄清协议声明时的作用域和成员
  • -
  • +

  • 更新了捕获列表章节来澄清对于闭包捕获列表中的弱引用和无主引用的使用语法。
  • -
  • +

  • 更新了运算符章节来明确指明一些例子来说明自定义运算符所支持的特性,如数学运算符,各种符号,Unicode符号块等
@@ -132,23 +133,23 @@ 2015-02-09
    -
  • +

  • 在函数作用域中的常量声明时可以不被初始化,它必须在第一次使用前被赋值。更多的信息,请看常量声明
  • -
  • +

  • 在构造器中,常量属性有且仅能被赋值一次。更多信息,请看在构造过程中给常量属性赋值
  • -
  • +

  • 多个可选绑定现在可以在if语句后面以逗号分隔的赋值列表的方式出现,更多信息,请看可选绑定
  • -
  • +

  • 一个可选链表达式必须出现在后缀表达式中
  • -
  • +

  • 协议类型转换不再局限于@obj修饰的协议了
  • -
  • - 在运行时可能会失败的类型转换可以使用as?as!运算符,而确保不会失败的类型转换现在使用as运算符。更多信息,请看类型转换运算符必 +

  • + 在运行时可能会失败的类型转换可以使用as?as!运算符,而确保不会失败的类型转换现在使用as运算符。更多信息,请看类型转换运算符
@@ -172,16 +173,16 @@ 2014-12-19
    -
  • +

  • 在对Watch App做消息通知模拟调试时,第一个payload.apns文件将会被默认选择
  • -
  • +

  • 在为Watch App使用asset catalog时,38mm和42mm尺寸的图片就会被使用
  • -
  • +

  • 在做Watch App开发时,@IBAction属性支持WKInterfaceSwitchWKInterfaceSlider Swift类型了
  • -
  • +

  • 现在可以通过Device窗口安装,删除和访问App容器中的数据了。
@@ -206,7 +207,7 @@ 2014-12-10
    -
  • +

  • 现在在Interface Builder中可以针对特定的Device设备自定义Watch应用的Layout布局了
@@ -231,16 +232,16 @@ 2014-11-28 @@ -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 表示: - + - - + + - - + + @@ -548,7 +548,7 @@ let dogString = "Dog‼🐶" - + @@ -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+203C

U+1F436
UTF-8
Code Unit
UTF-8
Code Unit
68 111 103182
PositionPosition 0 1 2
- + - + - - + + @@ -601,7 +601,7 @@ print("") - + @@ -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 10356374
PositionPosition 0 1 2
- + - + - - + + @@ -655,7 +655,7 @@ print("") - + @@ -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一个值的过程: + ![此处输入图片的描述](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Art/stackPoppedOneString_2x.png) 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协议,就应该可以被识别,看老码怎么做,
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 103128054
PositionPosition 0 1 2