parser = nil;
[parser release];
... это не делает то, что вы думаете, что делает. Если предположить, что parser
является свойством, то self.parser = nil
и parser = nil
делают совершенно разные вещи. Первый вызовет метод установки parser
, который освободит старое значение и установит для свойства значение nil. Последний просто меняет указатель с его текущего местоположения на ноль.
Установив указатель на nil, вы потеряли ссылку на объект, поэтому вы мгновенно утекли объект, который был ранее ему присвоен - вы в основном пытаетесь освободить объект nil. Вам необходимо удалить звонок nil
или поместить его после release
(см. Ниже).
Возможно, вы думаете о том, чтобы установить указатель на nil
после того, как вы его отпустили, чтобы избежать проблем, если вы попытаетесь получить к нему доступ в будущем.
Вот несколько других вопросов, которые помогут обеспечить некоторый контекст:
выпуск против ноль - Лучшая практика
Разница между выпуском и выпуском затем устанавливается в ноль