매주 진행하는 면접스터디에서 아래의 질문들에 대한 정리를 모은 글입니다.
https://github.com/JeaSungLEE/iOSInterviewquestions
swift struct와 class와 enum의 차이를 설명하시오.
프로퍼티나 메서드를 정의할 수 있다.
서브스크립트를 정의할 수 있다.
이니셜라이저를 정의할 수 있다.
익스텐션을 통해 확장할 수 있다.
특정 프로토콜을 준수할 수 있다.
참조 타입으로 값을 전달시 참조(주소, 포인터와 유사)가 전달된다.
상속이 가능하다.
ARC로 참조 횟수를 계산하여 메모리를 관리한다.
타입캐스팅은 클래스의 인스턴스에만 가능하다.
값 타입이다.
데이터를 전달할 때 값을 복사하여 전달한다(처음에는 참조하다가, 값이 변경되면 그때 복사를 한다).
Swift의 기본 데이터 타입은 모두 구조체로 구성되어 있다. 비효율적이라고 생각할 수 있으나, 스위프트는 꼭 필요한 경우에만 진짜 복사를 하며 효율적으로 처리한다.
메모리의 Stack 영역에 저장되며, 일정 크기가 넘으면 Heap에 저장된다.
상속이 불가능하다.
연관된 값의 집합을 정의한다.
RawValue를 통해 원시값을 지정할 수 있다.
애플은 다음 조건 중 하나 이상에 해당한다면 구조체를 사용하는 것을 권장한다.
이런 몇 가지 상황을 제외하고 클래스로 정의하여 사용한다.