Быстрый Задача-C Вопрос - PullRequest
1 голос
/ 22 марта 2011

Рассмотрим эту строку кода, данные являются параметром метода:

myVar = [[NSMutableData data] retain];

Я не совсем уверен, что здесь происходит, но я думаю, что он присваивает myVar данным, содержащимся в данных, увеличивая счетчик ссылок. Кто-то может подтвердить или опровергнуть это? Спасибо!

Источник исходного кода: см. Листинг 1: Apple Dev Article

Ответы [ 3 ]

2 голосов
/ 22 марта 2011

[Данные NSMutableData] будут возвращать автоматически освобожденный объект (удобный метод).

Таким образом, он будет автоматически освобожден, когда пул автоматического освобождения текущего цикла выполнения истощается.

Вы сохраняете его, чтобы предотвратить это ...

Тогда вы уверены, что у вас есть действительный указатель на объект.Это правильно, просто не забудьте выпустить его, когда он вам больше не нужен ...

РЕДАКТИРОВАТЬ

Например:

[ [ [ [ [ [ NSData data ] retain ] release ] autorelease ] retain ];

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

2 голосов
/ 22 марта 2011

Вы инициализируете переменную myVar новым экземпляром NSMutableData, используя удобный метод, а затем сохраняете его.

По сути, это то же самое, что и myVar = [[NSMutableData alloc] init];, поскольку вы все равно сохраняете его.

1 голос
/ 22 марта 2011

Выше «data» - это метод класса, который возвращает новый объект класса NSMutableData.Поскольку «данные» не являются одним из методов, которые подразумевают владение объектом, который он возвращает, метод «сохранить» объекта вызывается для установления права собственности.Вызывающий теперь отвечает за отказ от права собственности после завершения работы с объектом.

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