Должно ли это значение быть выпущено? - PullRequest
2 голосов
/ 26 февраля 2011

Я получал ошибку доступа к памяти segfault 11 в IOS Simulator, но она исчезает, когда я комментирую выпуск в коде ниже.

// get get the question number
NSString *text = [attributeDict valueForKey:XML_TAG_QUESTION_ATTRIBUTE_NUMBER];
question.number = [text intValue];
//[text release]; <==== no more segfault 11 when this is commented out. 

Мой вопрос таков: поскольку я получаю экземпляр NS String, возвращенный реализацией NSXMLParser, не увеличивается ли счетчик ссылок и не следует ли его выпускать?

Ответы [ 2 ]

13 голосов
/ 26 февраля 2011

Вот правило: всегда NARC в вашем управлении памятью.

Если вы позвоните:
(N), EW
(А) Lloc
(R) или
(С) опы ...

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

В случае контейнеров с другими объектами в контейнере сохраняются объекты, и вам не нужно беспокоиться об этом, пока вы не освободите контейнер.

2 голосов
/ 26 февраля 2011

Нет, не должно.

Прочтите руководство по программированию управления памятью: http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/MemoryMgmt/MemoryMgmt.html

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