オブジェクトの記述メソッドをオーバーライドしています。次のコードで{???}を置き換えるオブジェクトのメモリアドレスを出力する方法を知る必要があります。
-(NSString *) description {
return [NSString stringWithFormat:@"<SomeClass: %@>\nparmeterOne: %@\nparameterTwo: %@",
{???}, self.parameterOne, self.paramterTwo];
}
コンソールで次のように印刷したい:
<SomeClass: 0x4c05600> parameterOne: 12 parameterTwo: sausages
住所を印刷するには、%p
フォーマット指定子とセルフポインター:
-(NSString *) description {
return [NSString stringWithFormat:@"<SomeClass: %p>\nparmeterOne: %@\nparameterTwo: %@",
self, self.parameterOne, self.paramterTwo];
}
- (NSString *)description
{
return [NSString stringWithFormat:@"%@ Area: %@, %@", [super description], self.identifier, self.name];
}
NSObjectのサブクラスであるこのモデルオブジェクトの場合、余分な作業を避けて%p
。
- (NSString *)description
{
return [NSString stringWithFormat:@"<%@: %p> Area: %@, %@", NSStringFromClass([self class]), self, self.identifier, self.name];
}
そのため、このクラスから派生した具体的な実装者がいるオブジェクトモデルの場合、正しいクラス名が表示されます。