An abstract class that serves as the basis for objects that enable archiving and distribution of other objects.
SDKs
- iOS 2.0+
- macOS 10.0+
- Mac Catalyst 13.0+
- tvOS 9.0+
- watchOS 2.0+
Framework
- Foundation
Declaration
@interface NSCoder : NSObject
Overview
NSCoder
declares the interface used by concrete subclasses to transfer objects and other values between memory and some other format. This capability provides the basis for archiving (storing objects and data on disk) and distribution (copying objects and data items between different processes or threads). The concrete subclasses provided by Foundation for these purposes are NSArchiver
, NSUnarchiver
, NSKeyed
, NSKeyed
, and NSPort
. Concrete subclasses of NSCoder
are “coder classes”, and instances of these classes are “coder objects” (or simply “coders”). A coder that can only encode values is an “encoder”, and one that can only decode values is a “decoder”.
NSCoder
operates on objects, scalars, C arrays, structures, strings, and on pointers to these types. It doesn’t handle types whose implementation varies across platforms, such as union
, void *
, function pointers, and long chains of pointers. A coder stores object type information along with the data, so an object decoded from a stream of bytes is normally of the same class as the object that was originally encoded into the stream. An object can change its class when encoded, however; this is described in Archives and Serializations Programming Guide.
The AVFoundation framework adds methods to the NSCoder
class to make it easier to create archives including Core Media time structures, and extract Core Media time structure from archives.
Subclassing Notes
For details of how to create a subclass of NSCoder
, see Subclassing NSCoder in Archives and Serializations Programming Guide.