Swift에서는 코드를 구현할때 Struct와 Class로 필요한 형식과 용도에 맞게 묶어서 코딩을 한다.

Struct와 Class의 공통점

1. 데이터(Property)와 기능(Method)에 대해 정의 할 수 있다.

- 값을 저장하기 위해 Property를 정의
- 기능을 제공하기 위해 Method를 정의

 

2. 확장(Extension)이 가능하다
초기 구현된 내용에 새로운 기능 추가를 하여 하용할수 있다. (키워드 extention)

 

3. 서브스크립트(subscript) 사용할 수 있다.

- “.”을 이용해 하위의 프로퍼티에 접근 가능하다

 

4. 프로토콜 사용이 가능하다.

- Java의 Interface와 비슷한 개념

(추후 이 부분에 대해서도 정리가 필요)

 

5. 초기화를 정의하여 초기상태 설정이 가능하다.

- init를 이용하여 Property의 초기값을 설정 할수 있다.

Struct와 Class의 차이점

1. Struct는 value type이고, class는 reference type 이다.

- value type은 별도의 메모리에 값이 복사되어 사용된다.

- reference type 값이 복사 되는 것이 아니라 참조하고 있는 메모리의 주소를 사용한다.

 

2. Struct는 Stack에 할당하고, class는 heap에 할당 된다.

- Struct는 Stack에 할당하여 속도가 빠르다.

- Class는 Heap에 할당하여 속도가 느리다.

 

3. Struct는 상속을 할 수 없고, Class는 상속을 할수 있다.(Class에서도 단일 상속만 가능)

Structure를 써야 하는 경우.

1. 두 object의 같다, 다르다를 비교해야 하는 경우
2. Copy된 각 객체들이 독립적인 상태를 가져야 하는 경우
3. 코드에서 오브젝트의 데이터를 여러 스레드 걸쳐 사용할 경우

Class를 써야 하는 경우

1. 두 Object의 인스턴스 자체가 같음을 확인해야 할때
2. 하나의 객체가 필요하고, 여러 대상에 의해 접근되고 변경이 필요한 경우

 

struct와 class에 대한 swift 참고 url.

 

developer.apple.com/swift/blog/?id=10

docs.swift.org/swift-book/LanguageGuide/ClassesAndStructures.html

개발 시 공식 문서의 내용을 먼저 참고하는 습관을 갖자.

+ Recent posts