即使在初始化之后,常量似乎也是可变的

时间:2016-09-06 14:36:18

标签: swift

我现在来自C ++并学习Swift,我有一些问题需要理解Swift const概念。这段代码来自IOS开发书,我有一些问题需要理解为什么这样做。

    let firstFrame = CGRect(x: 160, y: 240, width: 100, height: 150)
    let firstView = UIView(frame: firstFrame)
    firstView.backgroundColor = UIColor.blueColor()
    view.addSubview(firstView)

据我所知:firstView是一个常量UIView对象,但即使对象是常量并且完全初始化,我可以在下一行中更改UIView成员的值吗?

我很困惑任何人都可以向我解释一下,因为在C ++中这是不可能的,还是我忽略了什么?

此致 Ruvi

1 个答案:

答案 0 :(得分:1)

以下是一篇很好的文章:Immutable models in Swift

简而言之,类是引用类型,并且说:

let firstView = UIView(frame: firstFrame)

你只确保引用firstView指向不会改变,内部属性可以。这是类与结构的区别,结构确保内部的值永远不会改变(除非指定为mutating,但这是偏离主题的。)