NSCopying protocol declares a method for providing functional copies of an object. The exact meaning of “copy” can vary from class to class, but a copy must be a functionally independent object with values identical to the original at the time the copy was made. A copy produced with
NSCopying is implicitly retained by the sender, who is responsible for releasing it.
NSCopying declares one method,
copyWithZone:, but copying is commonly invoked with the convenience method
copy method is defined for all objects inheriting from
NSObject and simply invokes
copyWithZone: with the default zone.
Your options for implementing this protocol are as follows:
NSCopyingby invoking the superclass’s
NSCopyingbehavior is inherited. If the superclass implementation might use the
NSCopyObjectfunction, make explicit assignments to pointer instance variables for retained objects.
NSCopyingby retaining the original instead of creating a new copy when the class and its contents are immutable.
If a subclass inherits
copyWithZone: to properly handle its own instance variables, invoking the superclass’s implementation first.
Returns a new instance that’s a copy of the receiver.
zone: NSZone) -> AnyObject
- (id nonnull)copyWithZone:(NSZone * nullable)
The zone identifies an area of memory from which to allocate for the new instance. If
NULL, the new instance is allocated from the default zone, which is returned from the function
The returned object is implicitly retained by the sender, who is responsible for releasing it. The copy returned is immutable if the consideration “immutable vs. mutable” applies to the receiving object; otherwise the exact nature of the copy is determined by the class.
Available in iOS 2.0 and later.