【发布时间】: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 消除了很多这种情况,但我想确保我的理解是正确的。 :-)