iOS/Swift문법

[Swift 문법] class와 struct - day3

안드뽀개기 2022. 3. 7. 08:57
반응형

1. struct

//클래스(class) vs 스트럭트(struct)
// struct는 프로퍼티에 값을 저장하는 데이터 모델
// 생성자x
// 유튜버 (데이터) 모델 - struct 구조체
struct YoutubeStruct {
var name: String
var subscribersCount: Int
}
var devKim = YoutubeStruct(name: "이름", subscribersCount: 1000)
var devKimClone = devKim
print("값 넣기 전 devKimClone.name : \(devKimClone.name)")
devKimClone.name = "호호호"
print("값 넣은 후 devKimClone.name : \(devKimClone.name)")
print("값 넣은 후 devKim.name : \(devKim.name)")
결과값
값 넣기 전 devKimClone.name : 이름
값 넣은 후 devKimClone.name : 호호호
값 넣은 후 devKim.name : 이름
view raw struct.swift hosted with ❤ by GitHub

 

2. class

// 클래스
// 생성자o
class YoutuberClass {
var name: String
var subscribersCount: Int
// 생성자 - 메모리에 올리는 과정
// init으로 매게변수를 가진 생성자 메소드를 만들어야
// 매개변수를 넣어서 그 값을 가진 객체를 만들 수 있다.
init(name: String, subscribersCount: Int) {
self.name = name
self.subscribersCount = subscribersCount
}
}
var devNim = YoutuberClass(name: "이름", subscribersCount: 1000)
var devNimClone = devNim
print("값 넣기 전 devNimClone.name : \(devNimClone.name)")
devNimClone.name = "호호호"
print("값 넣은 후 devNimClone.name : \(devNimClone.name)")
print("값 넣은 후 devNim.name : \(devNim.name)")
결과값
값 넣기 전 devNimClone.name : 이름
값 넣은 후 devNimClone.name : 호호호
값 넣은 후 devNim.name : 호호호
view raw class.swift hosted with ❤ by GitHub

 

위의 두 결과에 대한  설명

:  struct의 경우는 하나, 하나가 개별의 값이라고 생각하면된다. 위의 예제에서 devKim과 devKimClone은 별개의 값을 가지는 data model 변수이고, class의 경우는 devNim과 devNimClone이 서로 연결된 상태라고 보면된다. 그 이유는 두 변수가 같은 메모리 주소를 가르키기 때문이다.

 

 

반응형