클래스 vs. 스트럭트
(주로 Model 만들 때)
변수 하나하나를 클래스 또는 스트럭트로 묶는다.
함께 관리하기 위해서
묶는 방법이 2가지임 (클래스 또는 스트럭트)
Struct
장점 : memberwise initializer 때문에 좋다.
생성자를 만들지 않아도 좋다. 알아서 만들어줌.
예를 들어서 아래 같은 경우 YoutuberStruct( 라고만 쳐도 name:, subscribersCount 자동완성됨)
//유튜버(데이터) 모델 - struct(구조체)
struct YoutuberStruct {
var name: String
var subscribersCount: Int
}
//메모리에 올린다.
var devJeong = YoutuberStruct(name: "정대리", subscribersCount: 9999)
var devJeongClone = devJeong
print("값 넣기 전 devJeongClone.name: \(devJeongClone.name)")
devJeongClone.name = "호롤롤로"
//값 복사이기 때문에 둘의 값이 다르다
print("값 넣은 후 devJeongClone.name: \(devJeongClone.name)")
print("값 넣은 후 devJeongClone.name: \(devJeong.name)")
스트럭트 : 다른 종이에 복사
O. O
다른 한쪽이 바뀌어도 다른 한쪽 종이는 훼손되지 않음 그대로임.
Class
//클래스
class YoutuberClass {
var name: String
var subscribersCount: Int
//생성자 - 메모리에 올린다.
//init으로 매개변수를 가진 생성자 메소드를 만들어야 매개변수를 넣어서 그 값을 가진 객체(object)를 만들 수 있다.
init(name: String, subscribersCount: Int) {
self.name = name
self.subscribersCount = subscribersCount
}
}
var jeongDaeRi = YoutuberClass(name: "정대리", subscribersCount: 9999)
var jeongDaeRiClone = jeongDaeRi
print("값 넣기 전 jeongDaeRi.name: \(jeongDaeRi.name)")
jeongDaeRiClone.name = "호롤롤롤로"
print("값 넣은 후 jeongDaeRiClone.name: \(jeongDaeRiClone.name)")
print("값 넣은 후 jeongDaeRi.name: \(jeongDaeRi.name)")
클래스: 서로 연결되어 있다.
O. O
다른 한쪽이 바뀌면 다른 것에도 영향
선이 연결되어있다고 생각하면 될듯.
"참조"
(서로 같은 곳(메모리)을 바라보고 있음)
참고)https://www.youtube.com/watch?v=gYXNCJntXAY&list=PLgOlaPUIbynoqbQw_erl3L2w7vfOTCtFD&index=6
'iOS > iOS Swift 문법' 카테고리의 다른 글
iOS swift Xcode 에서 API문서 보는 법 단축키 (0) | 2022.05.26 |
---|---|
if 문 vs. switch문 (0) | 2022.05.13 |
/ 와 % 의 차이 (0) | 2022.05.09 |
옵셔널 변수 (0) | 2022.05.02 |
Day5_ Optional, Unwrapping(2) (0) | 2022.04.29 |