J'essaie d'éclaircir quelques points dans ma tête concernant la mise en œuvre de copyWithZone:
, quelqu'un peut-il commenter ce qui suit ...
// 001: Crime is a subclass of NSObject.
- (id)copyWithZone:(NSZone *)zone {
Crime *newCrime = [[[self class] allocWithZone:zone] init];
if(newCrime) {
[newCrime setMonth:[self month]];
[newCrime setCategory:[self category]];
[newCrime setCoordinate:[self coordinate]];
[newCrime setLocationName:[self locationName]];
[newCrime setTitle:[self title]];
[newCrime setSubtitle:[self subtitle]];
}
return newCrime;
}
// 002: Crime is not a subclass of NSObject.
- (id)copyWithZone:(NSZone *)zone {
Crime *newCrime = [super copyWithZone:zone];
[newCrime setMonth:[self month]];
[newCrime setCategory:[self category]];
[newCrime setCoordinate:[self coordinate]];
[newCrime setLocationName:[self locationName]];
[newCrime setTitle:[self title]];
[newCrime setSubtitle:[self subtitle]];
return newCrime;
}
En 001:
Est-il préférable d'écrire directement le nom de la classe
[[Crime allocWithZone:zone] init]
ou devrais-je utiliser[[[self Class] allocWithZone:zone] init]
?Puis-je utiliser
[self month]
pour copier les iVars ou devrais-je accéder directement aux iVars, c’est-à-dire_month
?