NSCoder

NSCoder 추상 클래스는 객체와 다른 값을 메모리와 다른 형식으로 전송하기 위해 구체적인 서브 클래스가 사용되는 인터페이스를 선언한다. 이 기능은 아카이빙 (객체 및 데이터 항목이 디스크에 저장되는 위치) 및 배포 (객체 및 데이터 항목이 다른 프로세스 또는 스레드간에 복사되는 위치)에 대한 토대를 제공한다. 이러한 목적을 위해 Foundation에서 제공되는 구체적인 서브 클래스는 NSArchiver, NSUnarchiver, NSKeyed​Archiver, NSKeyed​Unarchiver, NSPort​Coder 이다. NSCoder의 구체적인 서브 클래스는 일반적으로 coder 클래스 라고 불리고, 그 객체는 coder 객체 또는 간단히 coder 라고 불린다. 부호화만 할 수 있는 coder 객체는 encode coder라고 불리고 복호화만 할 수 있는 coder 객체는 decoder object라고 불린다.


해설

NSCoder는 객체, 스칼라, C 배열, 구조체 및 문자열과 이러한 유형의 포인터에 대해 작동한다. union, void *, 함수 포인터 및 long chains pointer 같이 플랫폼에 따라 구현이 다른 유형은 처리하지 않는다. 따라서 바이트 스트림에서 복호화 된 객체는 일반적으로 원래 스트림으로 부호화된 객체와 동일한 클래스입니다. 그러나 객체는 부호화될 때 클래스를 변경할 수 있다. 이것은 Archives and Serializations Programming Guide에 설명되어 있다. AV Foundation 프레임 워크는 NSCoder 클래스에 메서드를 추가하여 Core Media time structure를 포함한 아카이브를 쉽게 만들고 아카이브에서 Core Media time structure를 추출한다.

서브 클래싱 할 때 중요한 점
NSCoder의 서브클래스를 만드는 방법에 대한 자세한 내용은 Archives Serializations Programming Guide에서 Subclassing NSCoder를 봐라.

참고: https://developer.apple.com/reference/foundation/nscoder?language=objc

잘못된 부분이 있다면 알려주시면 바로 수정하겠습니다.