Свойство Objective C сохраняет количество - PullRequest
1 голос
/ 12 сентября 2010

если у меня есть свойство, такое как

@property (nonatomic, retain) NSArray *myArray;

и затем я установил его следующим образом

[self setMyArray:[[NSArray alloc]init]];

есть ли у меня счет 2?

Когда я выпущу его по моему dealloc методу, все равно будет сохранен счет 1?

Ответы [ 2 ]

5 голосов
/ 12 сентября 2010

На самом деле у вас слишком много ссылок, если вы устанавливаете свойство только с возвращением [[NSArray alloc] init].

Вы можете использовать [self setMyArray: [NSArray array]], чтобы избежать этого, поскольку метод 'array' возвращает автоматически освобожденный объект.

Или ...

NSArray* newArray = [[NSArray alloc] init];
[self setMyArray:newArray];
[newArray release];

... если вы не хотите использовать автоматически выпущенный объект.

2 голосов
/ 12 сентября 2010

Да, у вас будет 2 счет сохранения, другой вариант, чтобы избежать этого, будет означать:

[self setMyArray:[NSArray array]];

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

Хорошая вещь, связанная с наличием @property (retain), заключается в том, что если вы установите его в другое значение, оно освободит старое значение.

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