스트럭터와 클래스 비교
Struct - 구조체
// 유튜버 (데이터) 모델
struct YoutuberStruct {
var name : String
var subscriberCount : Int
}
값 넣기 전
var devJung = YoutuberStruct(name: "정대리", subscriberCount: 999)
var devJungClone = devJung
print("값 넣기 전 : devJungClone.name : \(devJungClone.name)")
//값 넣기 전 : devJungClone.name : 정대리
값 넣은 후
값을 새로 넣어도 원래의 값은 변하지 않음
devJungClone.name = "만쥬"
print("값 넣은 후 : devJungClone.name : \(devJungClone.name)")
// 값 넣은 후 : devJungClone.name : 만쥬
print("값 넣은 후 : devJung.name : \(devJung.name)")
// 값 넣은 후 : devJung.name : 정대리
결론
복사해서 사용 하는 개념으로 원래의 모델에 영향을 주지 않음
Class
생성자 즉, 메모리에 올린다.
init으로 매개변수를 가진 생성자 메소드를 만들어여 매개변수를 넣어서 그 값을 가진 객체(Object)를 만들수 있음
class YoutuberClass {
var name : String
var subscriberCount : Int
init(name: String, subscriberCount: Int) {
self.name = name
self.subscriberCount = subscriberCount
}
}
값 넣기 전
var jungDaeRi = YoutuberClass(name: "정대리", subscriberCount: 999)
var jungDaeRiClone = jungDaeRi
print("값 넣기 전 : jungDaeRiClone.name : \(jungDaeRiClone.name)")
// 값 넣기 전 : jungDaeRiClone.name : 정대리
값 넣은 후
원래의 값 까지 같이 변경이 됨
jungDaeRiClone.name = "만쥬"
print("값 넣기 후 : jungDaeRiClone.name : \(jungDaeRiClone.name)")
// 값 넣기 후 : jungDaeRiClone.name : 만쥬
print("값 넣기 후 : jungDaeRi.name : \(jungDaeRi.name)")
// 값 넣기 후 : jungDaeRi.name : 만쥬
결론
클래스는 서로 연결(관계)이 되어 있어 영향을 받음
반응형