Как работает (сохраняет) аксессор? - PullRequest
0 голосов
/ 31 марта 2011

На этот вопрос можно ответить в другом месте, но я его не видел.Я уже дважды прочитал «Руководство по управлению памятью» и все еще удивляюсь этому.

Представьте, что я создаю переменную экземпляра, подобную этой ...

@interface

@property(nonatomic,retain)NSArray *myArray;

@end

Теперь также представьте, что я получаю или устанавливаю myArrayиспользуя метод доступа где-то в моем классе.

например

NSArray* arrayInit = [[NSArray alloc]initWithObjects:@"1",@"2",nil];
self.myArray = arrayInit;
[arrayInit release];

Используя метод доступа, я увеличил счет сохранения myArray на 1?

Мой типичный deallocМетод будет выглядеть следующим образом:

-(void)dealloc{
[myArray release];
[super dealloc];
}

С этим связан вопрос, должен ли я всегда использовать средства доступа, когда я взаимодействую с «myArray».Разумно ли всегда писать self.myArray.count, например?

Ответы [ 2 ]

0 голосов
/ 31 марта 2011

Я написал вопрос по многим из них и получил несколько замечательных ответов здесь: Управление памятью iPhone (с конкретными примерами / вопросами)

Надеюсь, это поможет!

0 голосов
/ 31 марта 2011

Ответ на ваш первый вопрос - ДА.

Обычно лучше использовать средства доступа, когда они существуют, поэтому ДА, снова.Обратите внимание, что вызов средства доступа может иметь побочные эффекты, в зависимости от того, настроен ли он или если для этого члена настроено KVO.Так что обращение к Release непосредственно к члену или установка его на ноль через аксессор может привести к различным результатам, о которых вы должны знать.

...