본문 바로가기

iOS

Swift 구조체 vs 클래스

Swift 에서 구조체와 클래스를 구분해서 사용하는 것은 매우 중요한 부분 이라고 한다. 

구조체와 클래스는 서로 비슷하기도 하지만 구분해야할 다른 점들도 많은데, 이번에 정리를 해보려고 한다. 

[구조체와 클래스의 공통점]

- 값을 저장하기 위해 프로퍼티를 정의할 수 있다.

- 기능을 구현하기 위한 메서드를 정의할 수 있다. 

- 초기화될 때의 상태를 지정하기 위해 이니셜라이저를 정의할 수 있다.

- 새로운 기능 추가를 위해 extension을 통해 확장할 수 있다. 

- 특정 기능을 수행하기 위해 특정 프로토콜을 준수할 수 있다.

[구조체와 클래스의 각각의 특징]

struct 

- call by value로 값의 복사가 일어남 (값타입)

- stack메모리 영역에 할당이 된다 -> 속도가 빠르다. 하지만, 32768바이트만 사용이 가능해서 상용화 앱에서는 쓰기 어려운 단점이 있다.                                                       -> stack이 overflow뜨면 앱은 죽지 않고 그 전까지 데이터만 쌓이게 된다. 

- 구조체를 상속하는 것은 불가능 하다. 

- 구조체는 ARC에 해당되지 않는다. (열거형도 해당되지 않는다.)

struct 구조체이름 {

}

class

- call by reference로 참조 타입 (할당될 당시, 객체를 가리키고 있는 메모리 주소값만 복사가 된다.)

- Heap 메모리 영역에 할당이 된다 -> 속도가 느리다 (ARC가 이루어지는 영역)

- 상속이 가능하다.

class 클래스이름 {
	
}

 

요정도로 이론적인 부분을 정리해두고, 코드로 구현해 봐야겠다.

'iOS' 카테고리의 다른 글

Swift 싱클톤 패턴  (0) 2020.11.10
Swift Joined()  (0) 2020.10.19
Swift 프로토콜  (0) 2020.04.13
Swift 클로저  (0) 2020.04.06
Swift 메모리 관리  (0) 2020.04.03