Не может включать “сам” в метод описания Objective C?

То, что раскрутил, сказал. Но я также хотел бы сказать, что ваш пример выглядит как довольно необычное использование перечислений. Я не вижу значения, когда ShortMonth и LongMonth ссылаются на одно и то же - это будет иметь смысл для строк, но не для перечислений. Почему бы просто не иметь тип enum для одного месяца?

8
задан Coocoo4Cocoa 23 May 2009 в 07:05
поделиться

3 ответа

Используйте % p для self , тогда он отобразит адрес self . Если вы используете % @ , тогда он вызовет description на self , что установит бесконечную рекурсию.

30
ответ дан 5 December 2019 в 04:36
поделиться

Вы понимаете, что устанавливает бесконечную рекурсию.

Ваша реализация description неявно вызывает себя, когда вы передаете self , который затем вызывает сам себя и т. д.

Ваш сбой, скорее всего, связан с нехваткой места в стеке ... "stackoverflow", если хотите. Примерка с учетом сайта: -)

6
ответ дан 5 December 2019 в 04:36
поделиться

Вы можете использовать [ super description] вместо self, чтобы избежать бесконечной рекурсии, например:

- (NSString *)description
{
    return [NSString stringWithFormat:@"%@: %@", [super description], [self someVar]];
}
12
ответ дан 5 December 2019 в 04:36
поделиться