我现在来自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
答案 0 :(得分:1)
以下是一篇很好的文章:Immutable models in Swift。
简而言之,类是引用类型,并且说:
let firstView = UIView(frame: firstFrame)
你只确保引用firstView
指向不会改变,内部属性可以。这是类与结构的区别,结构确保内部的值永远不会改变(除非指定为mutating
,但这是偏离主题的。)