Swift 3.0中的UIView()构造函数发生了什么?

在Swift 2.2中,我经常使用类似于的简洁语法声明变量let x =

UIView?()。这给出xUIView?类型,并使用对其进行了初始化nil

(当然,UIView在这些示例中,您可以使用任何类型)

但是,当我在Swift 3.0中执行相同操作时,出现错误: Cannot invoke initializer for type 'UIView?'

with no arguments。它还说Overloads for 'UIView?' exist with these partially

matching parameter lists: (Wrapped), (nilLiteral:

())。不知何故,我认为UIView?(nilLiteral: ())我所追求的不完全是。

当然,还有其他替代方法可以执行相同的操作,例如let x: UIView? = nillet x = nil as

UIView(),但是它们比我以前使用的方法更为冗长。UIView?()在Swift 3.0中删除了构造函数,还是以我尚未发现的形式替换了它?

回答:

以下将x初始化为nil,方括号完全多余。

var x: UIView?

return x == nil

将返回true

查看开发者文档以获取更多信息。

https://developer.apple.com/library/content//documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html

如果定义可选变量而不提供默认值,则该变量会自动为您设置为nil:

var surveyAnswer: String?

// surveyAnswer is automatically set to nil

@Hamish发表评论以阐明UIView?()不再起作用的原因:

“语法UIView? 只是Optional的语法糖,因此UIView?()只是Optional.init()的语法糖。在Swift

2中,Optional的init()构造一个新的可选值设置为.None。是的,它工作正常。但是在Swift

3中,此初始化程序已被删除,这就是UIView?()不再起作用的原因”

以上是 Swift 3.0中的UIView()构造函数发生了什么? 的全部内容, 来源链接: utcz.com/qa/400671.html

回到顶部