Может кто-нибудь объяснить, пожалуйста, одну строку кода на Objective-C? - PullRequest
2 голосов
/ 08 января 2011
eventPoints = [[NSMutableArray array] retain];

Что делает ключевое слово "retain" вместе с "массивом"? "массив" нигде не определен.

Также eventPoints был объявлен как NSMutableArray.

Я просто пытаюсь учиться. Спасибо

Ответы [ 2 ]

6 голосов
/ 08 января 2011

Проверьте этот вопрос, который я задал: Управление памятью iPhone (с конкретными примерами / вопросами)

Мне тоже понадобилось время, чтобы освоить это.Надеюсь, это поможет!

РЕДАКТИРОВАТЬ : Что касается того, что делает [NSMutableArray array], в соответствии с документами на NSArray, оно делает следующее: «Создает и возвращает пустой массив».и используется изменяемыми подклассами NSArray, такими как NSMutableArray.По сути, это то же самое, что и: [[[NSMutableArray alloc] init] autorelease] (или что-то действительно похожее).Поскольку это autorelease d, вам нужно вызвать retain, чтобы сохранить переменную.

2 голосов
/ 08 января 2011

1) Что делает ключевое слово "retain" вместе с "массивом"?

Как вы знаете, target-C использует подсчет ссылок для управления памятью.«сохранить» с шагом 1 по каждому пункту.

2) «массив» нигде не определен.

«массив» определен в NSArray.NSMutableArray является подклассом NSArray, поэтому NSMutableArray может использовать функции, определенные в NSArray.«массив» - это метод класса, который создает и возвращает пустой массив.

Существует четыре способа явного увеличения 1 в target-c: alloc, copy, retain, attain, поскольку вы создаете пустой массив без использования каких-либоиз них вы вручную увеличиваете 1 на «сохранить».Поэтому в будущем вам может понадобиться [EveryPoints release], чтобы уменьшить значение 1, чтобы освободить его.

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