2014-09-09 3 views
1

저는 Apple의 Swift Programming Language 책을 통해 일하고 있으며 다음 예제를 발견했습니다. 계속하기 전에 올바른 개념을 갖고 있는지 확인하고 싶습니다.self 속성으로 변이 함수 이해하기

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 값으로 만들어집니다. 맞습니까?

+0

var myPoint는 x = 3 및 y = 3 인 점이됩니다. 그 밖에 알아야 할 것이 있습니까? :) –

+0

Obj-C와 iOS에 대한 제한된 지식으로 인해 메모리 관리가 걱정되었습니다. 이 예제에서는 문제가되지 않지만 과거에는 dealloc 및 참조 카운팅과 같은 것들이 내 머리를 회전시키고 나에게 겸손하게 해주 었으며 Obj-C 학습을 떠나는 것이 었습니다. Swift는이 점을 많이 제거하지만 제 이해가 올바른지 확인하고자합니다. :-) – razorpit

답변

1

정확한 값 1과 1은 3으로 대체됩니다. 메모리의 위치는 두 경우 모두 동일하며 특정 인스턴스가 할당 될 때 할당됩니다.