본문 바로가기
Swift

[Swift] 구조체와 클래스

by thoonk: 2021. 5. 6.

구조체와 클래스에 관해 기록합니다.

구조체와 클래스

  • 객체지향 프로그래밍(OOP)를 위한 필수 요소로 프로그램의 코드를 추상화하기 위해 사용함
  • Swift에서는 다른 프로그래밍 언어와 달리, 구조체와 클래스를 위한 별도의 인터페이스와 파일을 만들 필요가 없음

구조체와 클래스의 공통점

  • 여러 변수를 담을 수 있는 컨테이너
  • 데이터를 용도에 맞게 묶어 표현하고자 할 때 용이
  • 프로퍼티와 메서드를 사용하여 구조화된 데이터와 기능을 가짐
  • 하나의 새로운 사용자정의 데이터 타입을 만들어 주는 것
  • 초기화를 정의하여 초기 상태(이니셜라이저) 설정
  • 기능 추가를 위한 확장(extension)이 가능함
  • 특정 기능을 위한 프로토콜(protocol) 사용이 가능함
  • 서브스크립트(subscript) 사용하여 프로퍼티에 접근하도록 정의 가능함

구조체와 클래스의 차이점

  • 구조체 = 값 타입, 클래스 = 참조 타입
  • 구조체 상속 X, 클래스 상속 O
  • 구조체 인스턴스 타입 캐스팅 X, 클래스의 인스턴스 타입캐스팅 O
  • 클래스 인스턴스만 디이니셜라이저(deinit()) 활용
  • 클래스 인스턴스만 참조 횟수 계산 적용(why? 클래스 = 참조 타입)

구조체를 사용하는 것이 유리한 경우

  • 연관된 간단한 값을 캡슐화하는 것만이 목적일 때
  • 캡슐화한 값을 참조하는 것보다 복사하는 것이 합당할 때
  • 구조체에 저장된 프로퍼티가 값 타입이며 참조하는 것보다 복사하는 것이 합당할 때
  • 상속받거나 자신을 상속할 필요가 없을 때

부족한 점 피드백해주시면 감사하겠습니다👍

'Swift' 카테고리의 다른 글

[Swift] ARC (1)  (0) 2021.05.12
[Swift] popLast() vs removeLast()  (0) 2021.05.11
[Swift] Instance, Static, Class Method  (0) 2021.05.08
[Swift] flatMap & compactMap  (0) 2021.01.23
[Swift] 알고리즘에 필요한 Tip 정리  (5) 2021.01.22

댓글