Skip to content

Commit

Permalink
添加目录与链接
Browse files Browse the repository at this point in the history
  • Loading branch information
100mango committed Jul 30, 2015
1 parent 20e566c commit 091f589
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@
而且更加严格地定义了designated initializer和它的使用规则。
详情可以查阅《The Swift Programming Language》。目前由于Swift还没有足够稳定,还没有花时间在上面。但是可以想象得到Swift有着非常好的前景。

**后续:** 开始学习Swift后,越发感受到它的魅力。欢迎阅读:[Swift学习:Swift与Objective-C](https://github.com/100mango/zen/blob/master/Swift%E5%AD%A6%E4%B9%A0%EF%BC%9ASwift%E4%B8%8EObjective-C/Swift%E5%AD%A6%E4%B9%A0%EF%BC%9ASwift%E4%B8%8EObjective-C.md)

使用的规则是基本一致的,我们在OC也是遵循这样的规则的。
>Rule 1
A designated initializer must call a designated initializer from its immediate superclass.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
- [1.变量,常量,属性(property)和实例变量(instance variable)](#1)
- [2.控制流](#2)
- [3.函数](#3)
- [4.类与初始化(Initializers)](#4)


<h2 id="1">1.变量,常量,属性(property)和实例变量(instance variable)</h2>
Expand Down Expand Up @@ -461,24 +462,25 @@ private extension ViewController {
}
~~~

- 语法与alloc和init
- 创建对象与`alloc`和`init`

关于初始化,在Swift中创建一个对象的语法很简洁:只需在类名后加一对圆括号即可

~~~swift
var shape = Shape()
~~~

而在Swift中,`initializer`也与OC有所区别,Swift的初始化方法不返回数据而在OC中我们通常返回一个self指针
而在Swift中,initializer也与OC有所区别,Swift的初始化方法不返回数据而在OC中我们通常返回一个self指针

> Unlike Objective-C initializers, Swift initializers do not return a value. Their primary role is to ensure that new instances of a type are correctly initialized before they are used for the first time.

Swift的初始化方法让我们只关注对象的初始化之前在OC世界中[为什么要self = [super init]?](http://www.zhihu.com/question/22295642)。这种问题得以避免。Swift帮助我们处理了alloc的过程。也让我们的代码更简洁明确。

而在Swift中,initializer也有了更严格的规则
而在Swift中,`init`也有了更严格的规则

- 对于所有`Stored Properties`,都**必须**在对象被创建出来前设置好也就是我们必须在init方法中赋好值,或是直接给属性提供一个默认值

如果有property可以被允许在初始出来时没有值,也就是需要在创建出来后再赋值,或是在程序运行过程都可能不会被赋值那么这个property必须被声明为`optional`类型该类型的属性会在init的时候初始化为nil.



0 comments on commit 091f589

Please sign in to comment.