티스토리 뷰
[21.12.07 최종 수정]
안녕하세요 Hani입니다.
Core Data를 공부하려다가 꼭 알아야 할 개념 같아서.. 지나칠 수 없었어요. 🥺
Object Graph랑 이에 관련된 것들을 몇 가지 알아보려고 합니당.
Object Graph란 뭐냐 😡
객체 지향 프로그래밍에서는 객체들끼리 간접적이든 직접적이든 참조를 통해 관계를 갖게 되는데
이 관계를 통해 형성된 그룹을 Object Graph라고 합니다.
그리고 Object Graph의 전체 혹은 일부를 파일로 저장하거나 다른 프로세스로 보내서
재구성할 수 있도록 변환하는 작업을 Archiving이라고 해요. ☺️
Archiving에 대하여 좀 더 알아봅시당.
왼쪽 알파벳이 각 객체를 나타내고 굵은 선이 객체들의 관계를 나타내 주고 있어요.
그리고 객체, 객체들의 관계를 통해 형성된 그룹이 Object Graph라고 위에서 말씀드렸습니다. 😎
그리고 Object Graph를 저장하거나 전송할 수 있는 형태로 변환하는 작업이 Archiving이었습니다.
오른쪽 파일이 그 결과물인 archive에요.
archive는 객체들의 ID와 값, 그리고 객체들 간의 관계를 기록한 byte stream입니다.
아니 근데 아카이빙 왜 하는 거야 😡
Archiving은 객체를 영구적으로 만드는 일반적인 방법을 제공하기 때문이에요.
애플리케이션이 객체 데이터를 특별한 형태의 파일 포맷으로 작성하지 않고
객체를 파일로 저장할 수 있도록 archive에 저장합니다.
archive에 포함되려면 클래스가 반드시 NSCoding 프로토콜을 채택하고
Encoding과 Decoding에 대한 필수 메서드를 구현해야 합니다.
기본적인 자료형은 다 NSCoding을 준수하고 있기 때문에 커스텀 클래스를 사용할 때 채택하면 되겠습니당.
조립은 분해의 역순..?
Unarchiving은 Archiving의 과정을 뒤집은 거예요. ☺️
archive를 재구성하여 Archiving 하기 전 상태의 Object Graph와 동등하게 만드는 작업입니다.
그럼 어떻게 Archiving 하고 Unarchiving 할 수 있는데 😡
Foundation 프레임워크는 Object Graph의 Archiving과 Unarchiving을 위한 두 종류의 클래스를 제공하고 있어요.
각각 Archiver와 Unarchiver라는 클래스입니다.
그리고 Archiver와 Unarchiver는 두 종류로 또 나뉩니다. 🥺
String Key를 Encode/Decode 할 데이터의 ID로 사용하는 NSKeyedArchiver/NSKeyedUnarchiver.
객체의 상태를 특정 순서대로 Encode/Decode 하는 NSArchiver/NSUnarchiver.
하.. 복잡해 보이죠?
NSArchiver/NSUnarchiver는 옛날 거라 Deprecated 되었어요.
우리는 NSKeyedArchiver/NSKeyedUnarchiver만 알면 됩니당. ☺️
archive를 생성하기 위해서는 NSKeyedArchiver의 타입 메서드인
archivedData(withRootObject:requiringSecureCoding:)
다시 언아카이빙하여 Object Graph를 얻어오기 위해서는 NSKeyedUnarchiver의 타입 메서드인
unarchivedObject(ofClass:from:)를 호출하면 됩니다.
References
'iOS' 카테고리의 다른 글
[iOS] Core Animation Programming Guide (2) Setting Up Layer Objects (0) | 2022.02.27 |
---|---|
[iOS] Core Animation Programming Guide (1) Core Animation Basics (2) | 2022.02.18 |
[iOS] NSCoding 정리 (0) | 2021.12.07 |
[iOS] NSCoder 정리 (0) | 2021.12.07 |
[iOS] About the App Launch Sequence 정리 (0) | 2021.11.19 |
- Total
- Today
- Yesterday
- Testable
- 컴퓨터 추상화
- 최단경로문제
- 벨만포드 알고리즘
- test coverage
- 다익스트라 시간복잡도
- 최단경로 알고리즘
- 코딩대회
- 최대 매칭
- 네트워크 유량
- 네트워크 플로우
- WWDC19
- observeOn
- WWDC16
- 벨만포드 시간복잡도
- State Restoration
- WWDC21
- 부스트캠프 6기
- 포드 풀커슨 알고리즘
- IOS
- 최단경로 문제
- MeTal
- 강한 순환 참조
- HIG
- WWDC17
- 에드몬드 카프 알고리즘
- mach-o
- rxswift
- CompositionalLayout
- CPU와 Memory
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |