2023. 1. 3. 13:23ㆍiOS
[https://jeonyeohun.tistory.com/359]를 재해석한 포스팅입니다.

1. 여기서 NSCoder란 뭘까요?

Objective-C 및 Swift의 객체 및 기타 값을 인코딩 및 디코딩하는 Foundation 프레임워크의 클래스
데이터를 영구 형식으로 저장하고 나중에 다시 만드는 데 사용
데이터를 파일에 저장하거나 네트워크 연결을 통해 데이터를 전송하는 데 사용(encoding ↔️ decoding)
개체 및 개체가 참조하는 모든 개체에 대한 데이터를 포함하는 파일을 만드는 프로세스인 개체 보관 프로세스에서도 사용
2. 즉 요약하자면
✅ NSCoder는 인터페이스이며, 이를 구현하는 서브클래스는
어떤 객체를 메모리와 다른 데이터 포맷 사이에서 전환이 가능!
아카이빙과 디스트리뷰션을 통해 가능!
✅ Archiving은 객체와 데이터를 디스크에 저장하는 것!
Distribution은 객체와 데이터를 서로 다른 프로세스나 스레드사이에서 복사하는 것!
3. 아카이빙과 직렬화
Archives and Serializations
➡️ 계층을 이루고 있는 데이터를 바이트 스트림으로 만들 수 있는 방법
➡️ Nib은 사용자 인터페이스에 대한 복잡한 객체들의 관계를 파일로 표현하고, plist 파일도 어떤 객체에 대한 값의 목록들을 파일로 저장
Archives
➡️ 아카이브를 데이터 모델의 저장수단으로 사용하면 따로 저장을 위한 포맷팅을 필요없음, 언아카이빙을 하면 그대로 사용할 수 있음.
Serializations
➡️ Serialization은 값 객체들을 더 간단하게 저장할 수 있는 방법, 딕셔너리, 배열, 문자열, 바이너리 데이터들을 계층 관계로 저장
4. 첫 이미지


✅ 스토리보드나 xib는 객체 그래프가 아카이빙된 파일이고, 이 파일을 로드해주어야 뷰를 보여줄 수 있음.
그리고 이때 불리는 생성자가 required init?(coder: NSCoder)
5. awakeFromNib
객체 그래프에 있던 객체들이 언아카이빙 되고 시작되는 순서가 아카이빙된 순서와 같다는 것이 보장되지 않음.
➡️ 그래서 init 메서드에서 다른 객체에게 메시지를 보내는 행동은 절대 하면 안됨.
➡️ awakeFromNib은 모든 객체가 초기화된 이후에 호출되기 때문에 안전.
'iOS' 카테고리의 다른 글
ㅜㄷㅌㅅ (0) | 2023.01.22 |
---|---|
https://velog.io/@eddy_song/stack-view (0) | 2023.01.07 |
Then (0) | 2023.01.06 |
UIView.init()를 알아보자. (0) | 2023.01.02 |
1월 1일, convenience init은 왜 무한루프일까? (0) | 2023.01.01 |