아삭아삭 iOS 개발

[Swift 독학] 패스트캠퍼스 챌린지 20일차_구조체와 클래스 비교 본문

Swift

[Swift 독학] 패스트캠퍼스 챌린지 20일차_구조체와 클래스 비교

바닐라머스크 2022. 2. 12. 23:33

 

swift에서 클래스와 구조체는 문법과 사용방법 거의 유사합니다.

오늘은 클래스와 구조체의 공통점과 차이점에 대해 알아보겠습니다!

그전에 class, struct에 대한 내용을 안보셨다면, 먼저 해당 정리글을 참고하시면 좋습니다.

 

■ class와 struct의 공통점

  • 값을 저장하는 프로퍼티, 함수적 기능을 제공하는 메서드 선언 가능
    → 구조화된 데이터와 기능을 갖을  있음
  • 내부 값에 점구문(.)을 사용하여 접근 가능(서브 스크립트)
  • 생성자를 사용해 초기화 정의 가능
  • extension을 사용해 기능적 확장 가능
  • protocol을 채택하여 특정기능 설정 가능
  • 데이터를 용도에 맞게 표현하고자 할 경우 용이
     새로운 사용자 정의 데이터 타입을 생성 가능

 

■ class와 struct의 차이점

1) 클래스

  • 참조타입(reference type)
  • ARC(Automatic Reference Counting)로 메모리를 관리
    → ARC 메모리 관리방식은 별도 포스팅으로 추후 자세히 정리 예정
  • 상속이 가능
    → 한 클래스가 다른 클래스의 특성을 상속 가능
  • 타입 캐스팅을 통해 런타임에서 클래스 인스턴스의 타입을 확인하고 해석 가능
  • 초기화 해제구문(deinit)을 사용하여 클래스 인스턴스의 메모리 할당을 해제할 수 있음
  • 하나 이상의 클래스 인스턴스 참조 가능
    → 같은 클래스 인스턴스를 여러 개의 변수에 할당한 뒤, 값을 변경 시키면 모든 변수에 영향을 줌
       (즉, '메모리'가 복사 됨)
    → 변수를 복사하더라도 하나의 인스턴스 주소값을 가리키고 있으므로 복사본과 원본 모두 같은 값을 갖음

 

2) 구조체

  • 값 타입(value type)
  • 구조체 변수를 새로운 변수에 할당할 때마다 새로운 구조체가 할당됨
      (변수를 할당하면 스택 영역에 값이 저장되기 때문에 arc로 메모리 관리가 안됨)
  • 상속 불가능
    → 같은 구조체를 여러 개의 변수에 할당한 뒤, 값을 변경할 경우 다른 변수에 영향을 주지 않음
       (즉, '값 자체'가 복사 됨)

 

 

※ 클래스를 사용할수록 복잡성이 증가하므로 일반적으로는 swift에서는 구조체(, 열겨형) 사용을 선호

Apple 프레임워크의 대부분은 클래스 사용

 

 

 

 

 https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.