2010-01-12 2 views
0

Я запускаю свой NSXMLParser с изменяемыми данными, которые я получаю из Интернета. Интересно, освобождает ли парсер его освобождение или я должен выпустить его после разбора?Собственность NSXMLParser на данные

Благодаря

ответ

2

Какао использует метафору «Это не моя проблема» для управления памятью.

Если вы передаете что-то другому объекту, он не несет ответственности за его сохранение.

Если что-то передано одному из ваших объектов, вам необходимо его сохранить или оно может исчезнуть.

Обычно проходят такие объекты, как:

[otherObject doSomethingWith:[myThing autorelease]]; 

ИЛИ

[otherObject doSomethingWith:myThing]; 
    [myThing release]; 

Рамки какао работают по этому принципу, и вы должны разработать свои классы одинаково.

1

Если вы сохранили, и вы больше не использовать его, а затем отпустите его. NSXMLParser, скорее всего, сохранит сами данные и освободит их, когда он будет завершен с ним.

+0

Спасибо за ответ, должен ли я освободить его после разбора или это не имеет значения? Я видел, что если я выпущу его раньше, я получаю сбой на неизвестном селекторе и кажется, что синтаксический анализатор не сохраняет его –

+0

Если вы его сохранили, вы должны освободить его, как только вы закончите с ним. Это означает, что после того, как вы передали его NSXMLParser. –