NSMutable and its superclass
NSData provide data objects, or object-oriented wrappers for byte buffers. Data objects let simple allocated buffers (that is, data with no embedded pointers) take on the behavior of Foundation objects. They are typically used for data storage and are also useful in Distributed Objects applications, where data contained in data objects can be copied or moved between applications.
NSData creates static data objects, and
NSMutable creates dynamic data objects. You can easily convert one type of data object to the other with the initializer that takes an
NSData object or an
NSMutable object as an argument.
NSData methods change when used on a mutable data object:
When called, the bytes are immediately copied and then the buffer is freed.