Struct
Struct 사용하는 경우
보통 Struct
를 사용하는 경우는 3가지 경우로 나눠서 볼 수 있다.
- 두 object를 '같다, 다르다'로 비교해야 하는 경우
let point1 = Point(x: 3, y: 5)
let point2 = Point(x: 3, y: 5)
데이터 자체를 비교해야하는 경우 사용한다.
- Copy된 각 객체들이 독립적인 상태를 가져야 하는 경우
var myMac = Mac(owner: "Jason)
var yourMac = myMac
yourMac.owner = "jay"
myMac.owner
yourMac.owner
각 객체가 다른 상태로 관리되어야 하는 경우 사용된다.
- 코드에서 오브젝트의 데이터를 여러 스레드 걸쳐 사용할 경우
- 상대적으로 여러 스레드에 걸쳐 사용할 때 한전하게 쓸 수 있어
value
타입으로 사용한다.
Class
Class 사용하는 경우
- 두 object의 인스턴스 자체가 같음을 확인해야 할 때
- 하나의 객체가 필요하고, 여러 대상에 의해 접근되고 변경이 필요한 경우
- 일단
Struct
로 쓰자 왜냐하면 Struct > Class
로 바꾸는 것이 용이하기 때문에 되도록 Struct
로 쓰는 것을 추천!
상속
상속의 개념
A is B(A는 B에 포함)
- Student is Person(Student는 Person에 포함)
- Teacher is Person(Teacher는 Person에 포함)
Person is Student(Person는 Student에 포함)
Person: Super Class(Parent Class)
Student: Sub Class(Child Class)
상속의 규칙
- 자식은 한개의 superclass만 상속 받음
- 부모는 여러 자식들을 가질 수 있음
- 상속의 깊이는 상관이 없음
상속 언제 하면 좋을까?
Single Responsibility(단일 책임)
- 각 클래스는 한 개의 고려사항만 있으면 된다.
- 최대한 한가지 일에 집중
Type Safety(타입이 분명해야 할 때)
Shared Base Classes(다자녀가 있다)
Extensibility(확장성이 필요한 경우)
- 객체를 만들고 나서 다른 사람에 제공하면 다른 사람도 그것을 가지고 만들 수 있다.
Identity(정체를 파악하기 위해)
- 어떤 객체, 클래스인지 상속을 통해 파악 가능
코드에 대한 근거, 코드를 짠 이유 철학을 갖고 코딩하기
🍎 느낀점
- 공식문서 보고 한번 더 정리해야겠다.
- 대충 감은 오는데 뭔 말인지도 알겠는데 음...
https://fastcampus.co.kr/dev_online_iosapp