관리 메뉴

김종권의 iOS 앱 개발 알아가기

[swift] 19. struct vs. class 본문

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가능

 

Comments