Это не увеличивает счет удержания.Начальное значение alloc
устанавливает количество сохранений равным 1.
При этом никогда не следует вызывать метод init более одного раза для объекта.Хотя ваш пример может сработать, в лучшем случае он, вероятно, утечет из своего внутреннего хранилища и не освободит ваши obj1
, obj2
и obj3
.В худшем случае он может иметь несовместимое внутреннее состояние и привести к сбою.
Если вы просто делаете это пару раз, вы можете также создать новый массив:
NSArray* myArray = [NSArray arrayWithObjects:obj1, obj2, obj3, nil];
// Do some stuff...
myArray = [NSArray arrayWithObjects:obj4, obj5, obj6, nil];
// Do more stuff
Если вы делаете это много, например, в цикле, вам, вероятно, следует использовать NSMutableArray:
NSMutableArray* myArray = [NSMutableArray array];
for (...) {
[myArray removeAllObjects];
[myArray addObject:obj4];
[myArray addObject:obj5];
[myArray addObject:obj6];
// Do stuff
}