iOS/Swift 상식

Swift - Class vs Struct

HJ39 2022. 12. 31. 22:11

Class, Struct의 공통점

  • 값을 저장할 프로퍼티를 선언할 수 있다.
  • 함수적 기능을 하는 메서드를 선언할 수 있다.
  • 내부 값에 '.'을 사용하여 접근 가능하다.
  • 생성자를 사용해 초기 상태를 설정할 수 있다.
  • extension을 사용하여 기능을 확장할 수 있다.
  • Protocol을 채택하여 기능을 설정할 수 있다.

Class, Struct 차이점

Class

  1. 참조 타입
    • Heap 영역에 동적으로 할당돼서 Stack 영역보다 접근 속도가 느리다
    • Heap 영역은 스레드가 메모리를 공유하는 공간이기 때문에 스레드로부터 안전하지 않으므로 thread lock 기능이 필요하다 → 오버헤드 가능성 있음
    • 같은 인스턴스를 여러 개의 변수에 할당한 뒤 값을 변경시키면 할당한 모든 변수에 영향을 준다.
  2. ARC로 메모리를 관리한다.
  3. 상속 가능
  4. 타입 캐스팅을 통해 런타임에서 클래스 인스턴스의 타입을 확인할 수 있다.
  5. deinit을 사용하여 메모리 할당을 해제할 수 있다.
  6. Objective-C와 상호 운용성을 원하는 경우 사용한다.

 


 

Struct

  1. 값 타입
    • Stack 영역에 할당되어 하나의 명령어로 메모리를 할당, 해제할 수 있다.
    • 컴파일 단계에서 언제 생성되고 해제되는지 예측이 가능하다.
    • 스레드들이 각각 독립적인 Stack 공간을 가지고 있기 때문에 상호 배제를 위한 자원이 필요하지 않는다. -> 스레드로부터 안전하다.
    • Heap 영역보다 접근속도가 빠르다.
  2. 구조체 변수를 새로운 변수에 할당할 때마다 새로운 구조체가 할당된다.

 

 

# 참고한 사이트

  1. https://icksw.tistory.com/256

'iOS > Swift 상식' 카테고리의 다른 글

Swift - Any vs AnyObject  (0) 2023.01.23
Swift - Convenience init  (0) 2023.01.23
Swift - Copy On Write(COW) 동작 방식  (0) 2023.01.23
Swift - Class 성능 향상 시키는 방법  (0) 2023.01.07
iOS - Storyboard vs Code  (0) 2023.01.07