【问题标题】:Understanding mutating functions with the self property使用 self 属性理解变异函数
【发布时间】:2014-09-09 14:06:03
【问题描述】:

我正在阅读 Apple 的 Swift Programming Language 书籍,并遇到了以下示例。在继续之前,我想确保我的概念是正确的。

struct Point {
    var x = 0.0, y = 0.0
    mutating func moveByX(deltaX: Double, deltaY: Double) {
        self = Point(x: x + deltaX, y: y + deltaY)
    }
}

书中指出“moveByX 函数创建了一个全新的结构,其 x 和 y 值指向目标位置。”

所以,如果我这样做;

var myPoint = Point(x: 1, y: 1)
myPoint.moveByX(2, deltaY: 2)

我的理解是 Swift 从内存中释放了值为 1、1 的 myPoint 结构,并且它不再可用。取而代之的是用值 3、3 创建一个新的。我说的对吗?

【问题讨论】:

  • var myPoint 将成为 x=3 和 y=3 的点。还有什么要知道的? :)
  • 根据我对 Obj-C 和 iOS 的有限了解,我担心内存管理。我意识到在这个示例中这不是问题,但在过去,诸如 dealloc 和引用计数之类的事情让我头晕目眩,并且是让我谦卑并让我放弃学习 Obj-C 的事情之一。我的理解是 Swift 消除了很多这种情况,但我想确保我的理解是正确的。 :-)

标签: ios macos swift


【解决方案1】:

准确地说,值 1 和 1 被 3、3 替换。两种情况下内存中的位置相同,并且在分配特定实例时分配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-29
    • 2017-03-04
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多