class Person {
var name = "사람"
var age = 0
}
struct Animal {
var name = "동물"
var age = 0
}
func example() {
var animalStruct = Animal()
let personClass = Person()
personClass.name = "사람이름"
animalStruct.name = "동물이름"
}
전역이므로 데이터영역에 할당된 Person클래스와 Animal구조체이며
personClass로 클래스 인스턴스 생성시 해당 인스턴스는 힙영역에 할당되어 perconClass는 Person의 주소값을 가집니다.
그래서 personClass.name으로 Person의 변수값을 바꾸려할때
주소값을 이용해 Person클래스에 접근하여 새로운 변수값을 저장합니다.
구조체의 경우
데이터영역에 있는 animal은 그대로 있고
animalStruct 인스턴스로 생성하면 이 인스턴스는 스택영역에 할당됩니다.
구조체는 원본을 복사하는 Value 타입이기 때문에 constant로 생성할 경우
구조체 내부 변수에 값을 저장할 수 없습니다.
그래서 variable 키워드를 사용하여 생성한 후에 접근해야합니다.
애플문서 에서 나열한 사용시기는 다음과 같습니다.