아카이빙과 배포를 하기 위해 인스턴스가 encoded, decoded 가능하게 해주는 프로토콜 입니다.
NSCoding 프로토콜은 클래스의 인스턴스가 encoded, decoded 될 수 있게 반드시 2가지 메서드를 구현해야합니다. 이 기능은 구현함으로서 archiving과 distribution의 기반을 제공합니다. 이 프로토콜은 객체를 저장하고 다른 위치로 전송하는 과정을 가능케 하며, 이는 주로 아카이빙 및 디스트리뷰션의 기반을 제공합니다. 아카이빙은 객체를 디스크에 저장하여 나중에 사용할 수 있게 하는 것이고, 디스트리뷰션은 객체의 복사본을 다른 주소 공간으로 전송하여 다른 시스템과의 상호 작용이나 데이터 공유를 지원합니다.
객체 지향 디자인 원칙을 유지하기 위해, 인코딩 또는 디코딩되는 객체는 자체 인스턴스 변수를 인코딩하고 디코딩하는 책임을 집니다. 코더는 encode(with:) 또는 init(coder:)를 호출하여 객체에게 이를 수행하도록 지시합니다. encode(with:)는 객체에게 인코딩된 인스턴스 변수를 제공된 코더에게 인코딩하도록 지시하며, 객체는 이 메서드를 여러 번 받을 수 있습니다. init(coder:)는 객체에게 제공된 코더의 데이터를 사용하여 자체를 초기화하도록 지시하며, 이로써 다른 초기화 메서드를 대체하며 객체당 한 번만 전송됩니다. 코드화될 수 있는 모든 객체 클래스는 NSCoding 프로토콜을 채택하고 그 메서드를 구현해야 합니다."
이 문장은 NSCoding 프로토콜의 사용 방법과 객체 지향 디자인에 따라 객체가 자체의 인스턴스 변수를 인코딩하고 디코딩하는 책임을 갖도록 하는 원칙을 설명합니다. NSCoding 프로토콜을 채택한 클래스는 `encode(with:)`와 `init(coder:)` 메서드를 구현해야 합니다.
encode(with:): 이 메서드는 객체에게 자체의 인스턴스 변수를 제공된 코더에게 인코딩하도록 지시합니다. 이 메서드는 여러 번 호출될 수 있습니다.
init(coder:): 이 메서드는 객체에게 제공된 코더의 데이터를 사용하여 자체를 초기화하도록 지시합니다. 이 메서드는 객체당 한 번만 호출되며 다른 초기화 메서드를 대체합니다.
이러한 프로토콜을 사용하면 객체의 상태를 저장하고 다시 로드할 수 있으며, 이는 주로 아카이빙 및 디스트리뷰션의 기능을 지원하는 데 사용됩니다.
'SwiftUI' 카테고리의 다른 글
Core Data (0) | 2023.11.16 |
---|---|
EnvironmentObject (0) | 2023.11.15 |
Archiving, encoding, decoding (0) | 2023.11.13 |
Bundle (0) | 2023.11.12 |
FileDocument (0) | 2023.11.12 |