NSMutableCopying protocol declares a method for providing mutable copies of an object. Only classes that define an “immutable vs. mutable” distinction should adopt this protocol. Classes that don’t define such a distinction should adopt
- iOS 8.0+
- macOS 10.10+
- tvOS 9.0+
- watchOS 2.0+
NSMutableCopying declares one method,
mutableCopy(with:), but mutable copying is commonly invoked with the convenience method
mutableCopy() method is defined for all NSObjects and simply invokes
mutableCopy(with:) with the default zone.
If a subclass inherits
NSMutableCopying from its superclass and declares additional instance variables, the subclass has to override
mutableCopy(with:) to properly handle its own instance variables, invoking the superclass’s implementation first.