The object inherits from NSObject. Is there a method to create a copy of it as a new object?
(Edit — I'm trying to copy a UIButton).
The object inherits from NSObject. Is there a method to create a copy of it as a new object?
(Edit — I'm trying to copy a UIButton).
If it implements the NSCopying
protocol, then the -copy
method should do the trick.
You can get more information about the -copy
method and how it works with sub-objects on the ADC reference site. As Stephen Darlington mentions, you need to implement the NSCopying
protocol in your object.
UIButton does not conform to NSCopying, so you cannot make a copy via -copy.
However, it does conform to NSCoding, so you can archive the current instance, then unarchive a 'copy'.
NSData *archivedData = [NSKeyedArchiver archivedDataWithRootObject: button];
UIButton *buttonCopy = [NSKeyedUnarchiver unarchiveObjectWithData: archivedData];
Afterwards, you'll have to assign any additional properties that weren't carried over in the archive (e.g. the delegate) as necessary.
UIButton
doesn't conform to the NSCopying
protocol, so you have copy it by hand. On the other hand, it is not a bad thing, since it is not exactly clear what does it mean to copy a button. For example, should it add the button copy to the same view the original is in? Should it fire the same methods when tapped?