2015-10-22 74 views
3

Swift文档清楚地说。Swift初始化不返回值?

与Objective-C初始值设定项不同,Swift初始值设定项不返回 值。

请解释下面的语法。

let instanceOfString = String() 

它通过调用初始化程序并返回它来初始化一个String对象。值分配给instanceOfString。不是吗?

回答

5

swift文档是指类型的init方法的语法。

的语法在签名省略了返回类型和方法通常不包含return语句:

init() { 
} 

显然一个初始化(String())的调用并返回一个值。与Objective-C的不同之处在于纯Swift类型中的init方法不能自由地返回与该方法的目标不同的对象 - 它始终是目标类型的隐式分配实例。

唯一的例外是可以在可分段的初始化程序中返回nil

+1

Objective C引入了一个特性,通过使返回类型为'instancetype'来将返回类型锁定为目标类型。 – MadNik

+1

@MadNik你仍然可以返回派生类型。在Swift中这是不可能的 - 你甚至不能返回完全相同类型的不同实例。 –

+0

是的。伟大的一点。这使答案完整。 – MadNik