Что такое эквивалент 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] ));