Estoy anulando el método de descripción de un objeto. Necesito saber cómo imprimir la dirección de memoria del objeto para reemplazar {???} en el siguiente código:
-(NSString *) description {
return [NSString stringWithFormat:@"<SomeClass: %@>\nparmeterOne: %@\nparameterTwo: %@",
{???}, self.parameterOne, self.paramterTwo];
}
Quiero que se imprima en la consola así:
<SomeClass: 0x4c05600> parameterOne: 12 parameterTwo: sausages
objective-c
nslog
Distracción
fuente
fuente
[NSString stringWithFormat:@"%@ parameterOne:...", [super description], ...];
: la dirección termina allí porque laNSObject
tiene, pero tampoco tira nada que haya decidido que es relevante para la depuración en las superclases de las que pueda estar heredando.%p
espera un puntero de tipovoid *
, debeself
volver a lanzarvoid *
, de lo contrario, se produce un comportamiento indefinido.void *
eid
internamente son casi iguales, y en este caso no hay diferencia entre lanzarlovoid *
o no.El método más sencillo es utilizar la súper descripción
Entonces, en el caso de este objeto modelo que es una subclase de NSObject, puede esquivar trabajo adicional y recordar
%p
.Usando manualmente NSStringWithClass () y% p
Entonces, en el caso de un modelo de objeto en el que tiene un implementador concreto que se deriva de esta clase, mostrará el nombre de clase correcto.
fuente