Struct is Valute Type & Class is Reference Type
근데 이게 무슨 말이냐면..
코드 예시로 설명을 하자면..
struct Person {
var name: String = "SUHUN"
}
var i = Person()
print(i.name) // SUHUN 출력
var you = i // 복사
print(you.name) // SUHUN 출력
// #1
i.name = "Test Name"
print(i.name) // Test Name 출력
print(you.name) // SUHUN 출력
// #2
you.name = "Your Name Test"
print(i.name) //SUHUN 출력
print(you.name) // Your Name Test 출력
i.name 과 you.name은 이미서로 다른 인스턴스이다.
따라서 값 타입은 아무리 원본을 복사해도 다시 복사를 해주지 않는 한
각 인스턴스는 각각의 값을 갖게 된다.
class People {
var name : String = "suhun"
}
var mine = People()
print(mine.name) // print "suhun"
var your = mine // copy
var third = mine // copy for The 3rd
print(your.name) // print "suhun"
your.name = "Test Name" // 복사 한 인스턴스의 값 변경
// 참조한 데이터까지 변경
print(mine.name) // print "Test Name"
print(your.name) // print "Test Name"
Class(참조타입) 참조타입은 한번 복사하고 나면
해당 값을 참조한 원본까지 모두 값이 변경된다.