class User {
var nickname: String
var age: Int
// 생성자 정의
init(name: String, age: Int){
// 프로퍼티 값 초기화
self.nickname = name
self.age = age
}
// 인스턴스 생성
var user: User = User(name: "juh2", age: 29)
print(user.nickname) // "juh2"
// 구조체 선언
struct User {
var nickname: String
var age: Int
// 생성자 생략 가능
}
// 인스턴스 생성
var user: User = User(nickname: "juh2", age: 29) // ←기본생성자
print(user.nickname) // "juh2"
*애플은 참조타입 보다 구조체와 같은 값 타입을 선호할 것을 권고한다.
참조 타입 : 인스턴스를 전달하는 경우 원본 인스턴스의 참조를 전달하게 된다.
이는 원본을 변경하는 경우, 복사본도 변경이 되며 반대로 복사본을 변경하더라도 원본도 변경이 된다.
값 타입 : 인스턴스를 전달하는 경우 원본의 복사본을 전달한다.
이는 한 인스턴스가 변경되더라도 다른 인스턴스에는 영향을 끼치지 않는다.
원본을 변경하던 복사본을 변경하던 서로에게 영향을 끼치지 않는다.