macOS, iOS

[Swift] 구조체와 클래스의 공통점과 차이점

SweetDev 2020. 2. 6. 16:23

[공통점]

- 프로퍼티, 메소드 사용 가능 하다. 

- 서브스크립트 정의 가능 하다. ( a[3] 이렇게 중괄호로 쓰는건데, 쓸일이 많을까 싶긴 하다. )

- init() 설정 가능하다. 

- extension 쓸 수 있다. 

- protocol 채택 가능하다. 

 

[차이점]

* 전부 클래스에서만 가능하다

- 상속

- 타입 캐스팅 (실행 시 컴파일러가 클래스 인스턴스의 타입을 미리 파악하고 검사)

- deinit

- 참조에 의한 전달 (값에 대한 전달 말고!!)

 

* 인스턴스를 상수에 할당해서 쓰더라, 클래스 내부에서 변수로 선언한 저장 프로퍼티는 얼마든지 값을 수정할 수 있다. 

* 구조체는 하나라도 상수라면 다 불변적이다.