Переопределяющий метод описания для NSObject - PullRequest
2 голосов
/ 16 марта 2012

Я не уверен, что это проблема симулятора, но я не помню, чтобы у меня была эта проблема раньше, когда я использовал симулятор iPad 5.0 и ниже (сейчас я использую симулятор iPad 5.1). Я переопределил метод описания для моего объекта Condition:

- (NSString *)description {
    NSString *str = [[NSString alloc] initWithFormat:@"Condition: %@", _conditionName];
    return [str autorelease];
}

У меня есть массив этих объектов. Все мои значения действительны. Когда я делаю:

for (Condition *p in self.reportsArray) {
    NSLog(@"%@", [p description]);
}

Он записывает все мои значения, а затем в конце вылетает. Когда я смотрю на инструменты с зомби, последние 4 звонка

-[NSPlaceHolderString initWithBytes:length:encoding:]
+[NSString stringWithUTF8String:]
-[NSAutoreleasePool release]
-[NSPlaceholderString initWithFormat:locale:arguments:]

Правильно ли я переопределяю описание?

Edit: В Инструментах я получаю: сообщение было отправлено освобожденному объекту (зомби) по адресу: 0x8ccf190. В самом приложении я получаю EXC_BAD_ACCESS.

Ответы [ 2 ]

3 голосов
/ 16 марта 2012

Кажется, что строка, возвращенная из вашего метода описания, освобождается слишком рано.

Попробуйте переписать свой метод, используя метод класса stringWithFormat:.

- (NSString *)description {
    return [NSString stringWithFormat:@"Condition: %@", _conditionName];
}
0 голосов
/ 16 марта 2012

Убедитесь, что _conditionName не является примитивом. Поскольку строка формата "% @" ожидает объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...