FC 7장 - Struct, Protocol, Property, Method

Challenger·2021년 9월 12일
0

구조체 (1 ~ 3)

언제 사용?

값을 많이 저장할 때 서로 관계가 있는 값을 한 번에 관리하거나 표현할 때 사용
관계가 있는 여러 데이터를 묶어서 표현할 수 있다

ex) 강의 정보 - 강의이름, 강사이름, 학생 수 등 이런 것을 낱개가 아닌 뭉텅이로 관리 가능

object를 표현하는데 사용됨

object는 2가지 방식으로 구현 됨
1. structure
2. Class

Structure는 Vlaue Types라 복사돼서 할당
Class는 참조돼서 할당(공유하게 되는 구조)

이렇게 Structure와 Class는 구현될 때 차이가 있음
Class의 경우에는 둘 다 값이 Hey로 변했지만
Structure는 pStruct2만 Hey로 변한 것을 볼 수 있다


그 이유는 다음과 같다
Class의 경우에는 하나를 바라보는데
Structure는 복사해서 있기 떄문에 이게 값이 다름
(뭔소린지 나도 잘 모르겠는데 쨌든 값이 다르게 나온 거 보면 뭔가 다름)


생겨나는 공간에서 차이가 있음
필요한 메모리 공간이 달라서 구현에서도 차이가 생긴다
Structure는 Stack이라는 공간에, Class는 Heap이라는 공간에 생긴단다
(뭐 그렇다는데 솔직히 두 개가 뭔지도 모름)

실습



이렇게 struct를 활용할 수 있는데
솔직히 제대로 이해하지 못했음
많이 써봐야 할 것 같은데 아직은 너무 어렵다
어디에 뭐가 들어가는지 이게 너무 헷갈림...
아 빡친다
일단 이거 다 이해할라고 하면 시간 너무 오래걸릴 것 같아서
일단 넘어가자

프로토콜 (4)

Protocol - 지켜야 할 약속이라고 보면 됨
꼭 구현되어야 할 것들
어떤 서비스를 이용할 때 꼭 해야 할 일의 목록
ex. 음악 서비스라면 가입, 결제 등이 있겠다

프로퍼티 Properties(5 ~ 7)



stucture에서도 데이터, 메소드 두 가지 부분으로 나뉨
data 부분을 Properties라고 말함


값을 직접 저장한 게 Stored Property

데이터를 가져와서 활용하는 게 Computed Property
접근할 때마다 다시 계산함

  • 오브젝트는 데이터와 매소드로 구성되어 있다
  • 데이터에 해당하는 부분이 프로퍼티다
  • 크게 stored(값 저장), computed(값 활용)로 나뉜다
  • computed property는 값 변경이 안 되고, 리드만 가능하다 (var 키워드로 선언 가능하다)
  • 그러나 get set을 통해 값 변경 가능하도록 설정하여 값을 변경할 수 있다
  • 인스턴스를 만드는 것과 별개로 타입 자체에 속한 프로퍼티를 쓸 때는 static을 활용하여 타입 프로퍼티를 만들 수 있다

Properties VS Method

computed properties와 method로 쓰는 것 중 무엇이 더 좋을지 고민했던 강사님
기본적으로
Properties는 호출시 (저장된) 값을 하나 반환한다
Method는 호출시 어떤 작업을 한다

이런 기준을 사용한다고 함

메소드 (8 ~ 10)


  • mutating = 매소드가 스토어드 프로퍼티를 바꿀 경우에는 mutating을 넣는다
  • 타입프로퍼티 = 타입프로퍼티를 쓰면 인스턴스로 안 빼고 오브젝트에서 바로 프로퍼티 사용 가능(함수로도 만들 수 있음)
    ex. Lecture.target
    ex. Lecture.소속학원이름()

extension

profile
롤 챌린저의 100일 개발 도전기

0개의 댓글