Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- rxswift
- Refactoring
- 리팩토링
- Human interface guide
- swiftUI
- SWIFT
- swift documentation
- uitableview
- collectionview
- MVVM
- ribs
- UICollectionView
- tableView
- Xcode
- uiscrollview
- combine
- 애니메이션
- 클린 코드
- ios
- HIG
- map
- clean architecture
- Clean Code
- Observable
- UITextView
- 리펙터링
- 리펙토링
- 스위프트
- RxCocoa
- Protocol
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[swift] 19. struct vs. class 본문
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가능
'swift 5 문법' 카테고리의 다른 글
[iOS - swift] (프로퍼티) Stored property vs Computed property vs Type property (0) | 2021.06.16 |
---|---|
[iOS - swift] (초기화) designated init vs convenience init (0) | 2021.06.16 |
[swift] 18. 초기화(initialize) 심화 개념 (0) | 2020.10.01 |
[swift] 17. 연산자 재정의 (0) | 2020.09.27 |
[swift] 16. 고차 함수(Higher-order function) (0) | 2020.05.24 |
Comments