소피it블로그

[Foundation] NSCoder 정리 본문

개발_iOS/데이터 관리

[Foundation] NSCoder 정리

sophie_l 2022. 8. 17. 16:04

https://developer.apple.com/documentation/foundation/nscoder

 

Apple Developer Documentation

 

developer.apple.com

다른 객체들의 아카이빙과 분배를 가능하게 하는 객체들의 기본이 되는 추상 클래스

 

1. 선언

class NSCoder : NSObject

2. 개요

 

NS코더는 메모리와 다른 포맷들 사이에서 객체와 다른 값들을 전달하기 위해 구체적인 서브클래스에서 사용되는 인터페이스를 정의한다. 이 기능으로 인해 아카이빙(객체와 데이터를 디스크에 저장하기)과 분배(서로 다른 프로세스타 스레드 간에 객체와 데이터를 복제하기)의 기초가 확립된다. Foundation이 이 목적을 위해 제공하는 구체적인 서브클래스들은  NSArchiver, NSUnarchiver, NSKeyedArchiver, NSKeyedUnarchiver, NSPortCoder이다. NS코더의 구체적인 서브클래스들은 coder classes이고, 이 클래스들의 인스턴스들은 coder objects 혹은 간단히 coders이다. 값을 인코딩만 할 수 있는 코더를 encoder, 디코딩만 할 수 있는 코더를 decoder라고 한다.

NS코더는 객체, 스칼라, C 배열, 구조체, 문자열, 그리고 이 타입들의 포인터에서 작동한다. union, void *, 함수 포인터, long chains of pointers 등 플랫폼에 따라 구현이 달라지는 타입들은 다루지 않는다. 코더는 데이터와 함께 객체 타입 정보 또한 저장하는데, 이로써 바이트의 스트림에서 디코딩된 객체는 보통 원래 스트림으로 인코딩된 객체와 같은 클래스가 된다. 객체는 인코딩되면 클래스를 바꿀 수 있다.

AVFoundation 프레임워크는 NS코더 클래스가 Core Media time structures를 포함한 아카이브를 더 쉽게 생성하고, 이를 쉽게 추출할 수 있도록 하는 메서드를 추가한다.