Это зависит.Если вы владели объектом до того, как добавили его в массив, вы все равно должны отозвать свое собственное требование на владение, чтобы избежать утечки - требование на владение массивом для объекта является отдельным и ничего не освобождает вас от вашей собственной ответственности в отношении памятиправила управления.
Object *obj = [[Object alloc] init];
[anArray addObject:obj];
[obj release];
С другой стороны, если вы владеете не владельцем объекта, то вы все еще не владеете им после добавления его вмассив, и все равно не должен освобождать его.Массив устанавливает свою собственную заявку на владение, но, как и ваш собственный код, он отвечает за балансировку своих собственных заявок.
Object *obj = [Object object];
[anArray addObject:obj];
// or, avoiding a temp variable
[anArray addObject:[Object object]];
Когда вы освобождаете массив или удаляете объект из массива (при условии, что этоизменяемый массив), массив выдаст свое собственное требование о владении.Вызывающий код не несет никакой дополнительной ответственности за это - массив подал заявку на владение, поэтому он отвечает за его освобождение, когда он завершен с объектом.
Другими словами, ваша ответственность за освобождение объекта или его отсутствие имеет ничего не имеет отношения к тому, добавили ли вы его в коллекцию.Ответственность массива также не имеет ничего общего с тем, что происходит вне массива.Это в основе инкапсуляции;каждый класс максимально изолирован от того, что происходит внутри других классов.Что происходит в NSVegas, остается в NSVegas.: -)