Управление памятью Objective C (выделение и автовыпуск)

Когда Вы выделяете и инициализируете и возражаете и затем хотите возвратить тот объект, как Вы, как предполагается, возвращаете его?

У меня есть следующий код:

NSXMLDocument* fmdoc = [[NSXMLDocument alloc] initWithContentsOfURL:trackInfoUrl
    options:NSXMLDocumentTidyXML error:&err];  
return [fmdoc autorelease];

Это корректно?

5
задан JasonMArcher 29 November 2014 в 03:23
поделиться

1 ответ

, который является правильным. Поскольку вы инициализируете объект, это ваша ответственность за выпустить или автоматизировать его.

Поскольку уставный счет на создание составляет 1, и вы хотите, чтобы он не был удален до того, как метод вызова имеет возможность использовать объект, Autorelease - это правильное сообщение для отправки.

Если вы отправили его выпуску, память немедленно была бы восстановлена. Отправляя его AutoRelease, память не будет восстановлена ​​до тех пор, пока не будет сливаться пул Autorelease по умолчанию, что не произойдет до тех пор, пока не будет иметь возможность сохранить объект, если он должен.

4
ответ дан 15 December 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: