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 s'imprime dans la console comme ceci:
<SomeClass: 0x4c05600> parameterOne: 12 parameterTwo: sausages
objective-c
nslog
Undistraction
la source
la source
[NSString stringWithFormat:@"%@ parameterOne:...", [super description], ...];
- l'adresse finit là-dedans parceNSObject
qu'elle l'a, mais vous ne jetez pas non plus tout ce que vous avez décidé d'être pertinent pour le débogage dans les superclasses dont vous héritez.%p
attend un pointeur de typevoid *
, vous devez fonteself
revenir àvoid *
, un comportement non défini d' autre se produit.void *
etid
sont intérieurement presque les mêmes, et dans ce cas, il n'y a aucune différence que vous le jetiezvoid *
ou non.La méthode la plus simple consiste à utiliser la super description
Ainsi, dans le cas de cet objet modèle qui est une sous-classe de NSObject, vous pouvez éviter le travail supplémentaire et la mémoire
%p
.Utilisation manuelle de NSStringWithClass () et% p
Donc, dans le cas d'un modèle objet dans lequel vous avez un implémenteur concret dérivé de cette classe, vous montrez le nom de classe correct.
la source