Что такое эквивалент Objective-C для "toString()", для использования с NSLog?
есть ли метод, который я могу переопределить в своих пользовательских классах, чтобы когда
NSLog(@"%@", myObject)
называется, она будет печатать поля (или то, что я считаю важным) моего объекта? Думаю, я ищу эквивалент Objective-C для Java toString()
.
5 ответов
Это description
метод экземпляра, объявленный как:
- (NSString *)description
вот пример реализации (благодаря grahamparks):
- (NSString *)description {
return [NSString stringWithFormat: @"Photo: Name=%@ Author=%@", name, author];
}
добавить это @implementation
класса Фото:
- (NSString *)description {
return [NSString stringWithFormat:@"Photo: Name=%@ Author=%@",name,author];
}
вы можете переопределить метод описания NSObject:
- (NSString *)description
по вопросу ведения журнала я рекомендую это блоге для лучшего входа в Objective-С.
есть две функции, которые можно использовать.
- (NSString*)description
это будет отображаться, когда вы поместите свой объект как, т. е. параметр для NSLog
. Другая функция описания:
- (NSString*)debugDescription
это будет называться, когда вы делаете po anInstanceOfYourClass
в окне команды debug. Если у вашего класса нет
это выведет доступные голоса:
NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description] ));