swift 5 문법
[swift] 19. struct vs. class
jake-kim
2020. 10. 1. 02:06
struct와 class 중에서 어떤 것을 사용할지 정하는 기준
- 상속이 필요하지 않고 모델이 크지 않으면 struct 사용
- json파싱할 경우 struct사용
- serialize해서 전송하거나 파일로 저장할 일이 있다면 class사용
- Obj-C에서도 사용하려면 class사용
* serialize: 객체를 직렬화 하여, 전송 가능한 파일 형태로 만드는 것
struct
- call-by-value: closure에 의해 capture되는 경우도, reference copy
- stack memory할당(빠른 속도)
- scope base lifetime: 컴파일 타임에 complier가 언제 메모리를 할당/해제할지 알고 있음
- data locality: 캐시 히트율이 높음
- Codable 프로토콜을 통해 JSON < - > struct 매핑 가능
- multi thread환경에서 reference타입 아니므로 유리
class
- call-by-reference
- head memory할당 (느린 속도)
- 런타임에 직접 alloc하여 reference counting에 의해 dealloc필요
- NSData의 Serialize가능
- deinit가능
class타입 같지만, struct형인 경우
- Collection type(Array, Dictionary, ...) String
- 단, copy-on-write방식을 사용하여 비효율적인 value-copy방식을 보완
공통점
init정의 가능 / extension가능 / protocol가능