Saya mengganti metode deskripsi objek. Saya perlu tahu cara mencetak alamat memori objek untuk mengganti {???} dalam kode di bawah ini:
-(NSString *) description {
return [NSString stringWithFormat:@"<SomeClass: %@>\nparmeterOne: %@\nparameterTwo: %@",
{???}, self.parameterOne, self.paramterTwo];
}
Saya ingin mencetaknya di konsol seperti ini:
<SomeClass: 0x4c05600> parameterOne: 12 parameterTwo: sausages
objective-c
nslog
Tidak ada gangguan
sumber
sumber
[NSString stringWithFormat:@"%@ parameterOne:...", [super description], ...];
- alamatnya berakhir di sana karenaNSObject
memilikinya, tetapi Anda juga tidak membuang apa pun yang Anda putuskan relevan dengan debugging di superclass apa pun yang mungkin Anda warisi.%p
mengharapkan penunjuk tipevoid *
, Anda harus melemparkanself
kembali kevoid *
, jika tidak perilaku tidak terdefinisi terjadi.void *
danid
secara internal hampir sama, dan dalam hal ini tidak ada perbedaan apakah Anda memasukkannyavoid *
atau tidak.Metode termudah adalah dengan menggunakan deskripsi super
Jadi dalam kasus objek model ini yang merupakan subkelas NSObject, Anda dapat menghindari pekerjaan ekstra dan mengingat
%p
.Secara manual menggunakan NSStringWithClass () dan% p
Jadi dalam kasus model objek di mana Anda memiliki pelaksana konkret yang diturunkan dari kelas ini, Anda akan menunjukkan nama kelas yang benar.
sumber