티스토리 뷰

iOS

[Swift] Struct와 Class 비교하기

Sueaty 2021. 5. 6. 15:25

Swift & Struct와 관련된 면접 질문

  • Struct와 Class의 차이에 대해 설명하고 언제 각각을 쓰면 좋을지 설명해보세요
  • Struct가 무엇이고 어떻게 사용하는지 설명하시오

struct와 class의 비교는 많은 interview referene에서 찾아볼 수 있기 때문에 더 잘 알아야 한다는

강박이 생기는 것 같습니다.

오늘은 꼬리에 꼬리를 물 수 있는 Struct와 Class에 대해 다뤄보겠습니다.

Struct & Class

  Struct Class
정의 타입이 다른 데이터를 하나로 묶는 자료구조 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀
타입 값 타입 (value type) 참조 타입 (reference type)
메모리 공간 stack heap
공통점 내부에 property, function, subscript, initializer를 둘 수 있음
extension 키워드를 통해 확장 가능
protocol을 따를 수 있음
generic 사용 가능함
차이점
복사 방식 함수에 인자로 전달 / 변.상수에 배정(assigned) / 초기화 될 때 내용이 복사가 일어남

A → B
A → C
함수에 인자로 전달 / 변.상수에 배정(assigned) / 초기화 될 때 기존의 data를 공유

A ← B
    ↖ C
let 사용 생성한 객체 자체가 상수가 되어 내부 property 변경 불가
error: "Cannot assign property: ____ is a 'let' constant"
- 내부 property 변경 가능
- reassign 불가
(
let myClass = A()
let yourClass = A()
myClass = yourClass  안됨
)
var 사용 내부 property들을 mutating function을 통해 변경 가능 - 내부 property 변경 가능
- reassign 가능
다중스레드
환경
memory issue 들을 제거하는데 도움이 됨
↣ deadlock
↣ race condition
(class처럼 하나의 자료를 모두 참조하고 있는게 아니라
복사가 이루어진 것이니 각 스레드에서 처리 가능)
-
상속 불가능 가능
deinit 불가능 (애초에 deinit은 ref type 용) 가능

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함