【发布时间】:2015-09-22 09:02:51
【问题描述】:
我正在学习 Swift,这段基本代码让我感到困惑。代码如下:
var newBackgroundColor : UIColor
我练习过 : Int 或 : String ... 从来没有这个“自定义”的。我的问题是: UIColor 是一个类还是一个类型?如果它是一个类,我们为什么不使用这个代码:
var newBackgroundColor = UIColor
【问题讨论】:
我正在学习 Swift,这段基本代码让我感到困惑。代码如下:
var newBackgroundColor : UIColor
我练习过 : Int 或 : String ... 从来没有这个“自定义”的。我的问题是: UIColor 是一个类还是一个类型?如果它是一个类,我们为什么不使用这个代码:
var newBackgroundColor = UIColor
【问题讨论】:
如果你 Cmd-单击代码中的 UIColor,你将被带到 UIKit 框架的头文件,直接到 UIColor 公共接口,在那里你可以看到是的,它是一个类。或者,您可以在 Apple 的文档中查找它。
你不能做到的原因
var newBackgroundColor = UIColor
... = 是这里初始化的简写。您不仅要指明属性/变量的类型,还要指定其初始值。 IE。为此,您需要指定它应该是哪种颜色。例如
var newBackgroundColor = UIColor.blackColor()
否则,如果你真的只需要声明类型,但稍后会进行初始化,那么你应该使用:
var newBackgroundColor : UIColor
【讨论】:
首先,是的,UIColor 是一个类。它是 UIKit 的一部分。见UIColor Class Reference。
第二,你问为什么不能做:
var newBackgroundColor = UIColor
您不能这样做,因为它在语法上不正确。您不能只说=,其中右侧的表达式只是一个类的名称。它必须是该类的一个实例,例如:
var newBackgroundColor = UIColor.redColor()
这定义了一个UIColor 变量并使用特定实例对其进行初始化。这实际上是以下的简写:
var newBackgroundColor: UIColor = UIColor.redColor()
【讨论】:
UIColor 既是类又是类型。所有的类都是类型。
声明
var newBackgroundColor: UIColor
声明newBackgroundColor 持有对UIColor 类实例的引用。
【讨论】: