То, что раскрутил, сказал. Но я также хотел бы сказать, что ваш пример выглядит как довольно необычное использование перечислений. Я не вижу значения, когда ShortMonth и LongMonth ссылаются на одно и то же - это будет иметь смысл для строк, но не для перечислений. Почему бы просто не иметь тип enum для одного месяца?
Используйте % p
для self
, тогда он отобразит адрес self
. Если вы используете % @
, тогда он вызовет description
на self
, что установит бесконечную рекурсию.
Вы понимаете, что устанавливает бесконечную рекурсию.
Ваша реализация description
неявно вызывает себя, когда вы передаете self
, который затем вызывает сам себя и т. д.
Ваш сбой, скорее всего, связан с нехваткой места в стеке ... "stackoverflow", если хотите. Примерка с учетом сайта: -)
Вы можете использовать [ super description] вместо self, чтобы избежать бесконечной рекурсии, например:
- (NSString *)description
{
return [NSString stringWithFormat:@"%@: %@", [super description], [self someVar]];
}