My application crashed with the reason:
-[MyClassName copyWithZone:] unrecognized selector sent to instance
I have two classes. Let
Your -setObj1:
method is declared as copy
, so it calls -copy
on your Class1
object. -copy
just calls -copyWithZone:nil
. So you either need to implement the NSCopying
protocol (which means implementing -copyWithZone:
), or change your property from copy
to retain
.
To make your class respond to copyWithZone:
, you have to implement the NSCopying
protocol in your class. And you must override the copyWithZone:
method.
For example:
First you have to implement the NSCopying protocol in your interface declaration.
@interface MyObject : NSObject <NSCopying>
Then override the copyWithZone
method like,
- (id)copyWithZone:(NSZone *)zone
{
id copy = [[[self class] alloc] init];
if (copy)
{
// Copy NSObject subclasses
[copy setVendorID:[[self.vendorID copyWithZone:zone] autorelease]];
[copy setAvailableCars:[[self.availableCars copyWithZone:zone] autorelease]];
// Set primitives
[copy setAtAirport:self.atAirport];
}
return copy;
}
I am glad if this helps you.
(Reference)