Basic concepts and usage of deep-shade copies
Basic concepts
Shallow copy paper Copy the object itself, the object's properties, the contained object does not copy
A deep copy duplicates both the object itself and the object's properties.
The class that supports replication in the Foundation framework is a shallow copy by default.
Copy and Mutabelcopy
- An object can create a copy of an object using the copy and Mutabelcopy methods
- Copy-you need to implement the Nscoppying protocol first, creating immutable replicas (such as NSString, Nsarray, Nsdictionary)
- Mutabelcopy-You need to implement the Nsmutabelcopying protocol first, creating a mutable copy (such as nsmutabelstring, Nsmutabelarray, Nsmutabeldictionary)
- Deep copy: A copy of the content, the source object and the copy point to a different two objects. The source object reference counter is unchanged, and the replica counter is set to 1
- Shallow copy: pointer copy, source object and copy point to the same object. Object reference counter +1 is actually equivalent to doing a retain operation
- Only immutable objects Create immutable replicas (copy) is shallow copy, others are deep copy
Example: A custom copy of an object
The object has a copy attribute, which implements the Nscopying, nsmutabelcopying protocol to implement the copywithzone of the Protocol: Methods and Mutabelcopywithzone: Methods
Code:
Different implementations of the shades of a copy; code examples
The difference between a Objective-c object's dark copy is that you have different implementations of Copywithzone
A summary of the depth of the copy and the retain
The relationship between copy, Mutabelcopy, and retain
- Foundation replicable object, when we copy an immutable object, his role is equivalent to retain (Cocoa do memory optimization)
- When we use Mutabelcopy, the copy is mutable regardless of the source master, and it implements a true copy
- When we copy a mutable object, the replica object is immutable, and it also implements a true copy
Some common replication cases for Foundation
Deep copy and shallow copy of iOS development (mutablecopy and copy)