swift - 即使在初始化之后,让常量看起来也是可变的

标签 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++ 中这是不可能的,或者我是否忽略了什么?

问候 鲁维

最佳答案

这是一篇谈论这个的好文章:Immutable models in Swift .

简而言之,类是引用类型,也就是说:

let firstView = UIView(frame: firstFrame)

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

关于swift - 即使在初始化之后,让常量看起来也是可变的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39351695/

相关文章:

sql-server - 如何使用 webservice 将图像从 swift 保存到 SQL Server 数据库?

swift - 从 Swift 中的 void-func 提前返回?

ios - 3 秒后 UIRefreshControl endRefreshing

ios - 使用 Swift 对日历进行 Google 身份验证

ios - 如何在请求网络中应用等待?

swift - 测试中@testable 导入对象的运行时类型检查

ios - 如何在 Parse.com 中向我的类(class)添加另一列? ( swift )

swift - WCSession 尚未激活

ios - 将 Delegate 分配给 PopoverPresentationController 时出现零错误

ios - Swift 中的 NSCoding 没有正确归档数据?