115 votes

NSLog l'adresse mémoire d'un objet dans la méthode de description remplacée

Je remplace la méthode de description d'un objet. J'ai besoin de savoir comment imprimer l'adresse mémoire de l'objet pour remplacer {???} dans le code ci-dessous:

 -(NSString *) description {
    return [NSString stringWithFormat:@"<SomeClass: %@>\nparmeterOne: %@\nparameterTwo: %@",
            {???}, self.parameterOne, self.paramterTwo];
}
 

Je veux qu'il soit imprimé dans la console comme ceci:

 <SomeClass: 0x4c05600> parameterOne: 12 parameterTwo: sausages
 

210voto

Vladimir Points 110327

Pour imprimer une adresse, utilisez le spécificateur de format %p et le pointeur automatique:

 -(NSString *) description {
    return [NSString stringWithFormat:@"<SomeClass: %p>\nparmeterOne: %@\nparameterTwo: %@",
            self, self.parameterOne, self.paramterTwo];
}
 

6voto

Utilisez la super description

 - (NSString *)description
{
    return [NSString stringWithFormat:@"%@ Area: %@, %@", [super description], self.identifier, self.name];
}
 

Ainsi, dans le cas de cet objet de modèle qui est une sous-classe de NSObject, vous pouvez éviter un travail supplémentaire.

Autrement

 - (NSString *)description
{
    return [NSString stringWithFormat:@"<%@: %p> Area: %@, %@", [self class], self, self.identifier, self.name];
}
 

Ainsi, dans le cas d'un modèle objet dans lequel vous avez un implémenteur concret dérivé de cette classe, vous afficherez le nom correct de la classe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X