J'utiliser ce code pour copier instance de ma classeGestion de la mémoire. Copier méthode
//Create the copy and pass it onto edit controller
PoolFacility *poolCopy = [self.thePoolFacility copy];
self.childController.thePoolFacilityCopy = poolCopy;
[poolCopy release];
Maintenant, quand je vois les variables dans le débogueur, comment se fait quelques-uns des champs de classe ont la même adresse de mémoire? Ne devraient-ils pas être indépendants? Selon Apple
Le protocole NSCopying déclare un procédé pour fournir des copies fonctionnelles d'un objet. La signification exacte de «copie» peut varier d'une classe à l'autre, mais une copie doit être un objet fonctionnellement indépendant dont les valeurs sont identiques à l'original au moment de la copie.
Les deux cas sont poolCopy & la thePoolFacility originale
Ma méthode de copie de classe ressemble à ceci:
- (id)copyWithZone:(NSZone *)zone {
PoolFacility *copy = [[[self class] allocWithZone:zone]init];
copy.name = [self.name copy];
copy.type = [self.type copy];
copy.phoneNumber = [self.phoneNumber copy];
//make sure I get proper copies of my dictionaries
copy.address = [self.address mutableCopy];
copy.webAddress = [self.webAddress copy];
copy.prices = [self.prices mutableCopy];
copy.pools = [self.pools mutableCopy];
return copy;
}
Oui, sur les objets non mutables, la copie est la même que la conservation. –