Каков эквивалент Objective-C для “toString()” для использования с NSLog?

StackOverflow https://stackoverflow.com/questions/1104746

  •  12-09-2019
  •  | 
  •  

Вопрос

Есть ли метод, который я могу переопределить в своих пользовательских классах, чтобы при

      NSLog(@"%@", myObject) 

вызывается, он напечатает поля (или все, что я считаю важным) моего объекта?Я предполагаю, что я ищу эквивалент Java на Objective-C toString().

Это было полезно?

Решение

Это тот самый 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-C.

Есть две функции, которые вы можете использовать.

- (NSString*)description

Это будет отображаться, когда вы разместите свой объект как, Т.е.параметр для NSLog.Другой функцией описания является:

- (NSString*)debugDescription

Это будет вызвано, когда вы это сделаете po anInstanceOfYourClass в окне командной строки debug.Если в вашем классе нет debugDescription функции, то просто description будет вызван.

Обратите внимание, что базовый класс NSObject действительно имеет description реализовано, но это довольно примитивно:он отображает только адрес объекта.Вот почему я рекомендую вам реализовать description в любом классе, из которого вы хотите получить информацию, особенно если вы используете description метод в вашем коде.Если вы используете description в вашем коде я предлагаю вам реализовать debugDescription также, также делая debugDescription более многословный.

При этом будут выведены доступные голоса:

    NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description] ));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top