Сообщение означает, что код пытается вызвать метод для строкового объекта (т.е. это не ноль), но объект был освобожден (освобожден).
В didEndElement
вы освобождаете completeString
но не устанавливая его на nil
.Это делает возможной ошибку.
Вероятно, что происходит после того, как didEndElement
, foundCharacters
будет вызван до a didStartElement
(возможно, есть какой-то пробел, как новыймежду тегами), поэтому completeString
по-прежнему освобождается, что приводит к сбою.
После выполнения [completeString release];
также установите для него значение nil
, чтобы любые вызовы метода, которые могут быть выполнены с ним до его повторного вызова,выделено не будет сбой.
Тогда было бы неплохо сделать addObject
только если completeString не равен nil
(что может произойти в зависимости от того, как вложены теги xml).
Так что попробуйтеизменение didEndElement
на:
if (completeString != nil) {
[offersData addObject:completeString];
}
[completeString release];
completeString = nil;