В сущности, у вас есть три вида объектов, каждый с разным шаблоном.
Переходные объекты
В общем, вы должны autorelease
временные объекты.Это объекты, которые размещены локально и не должны существовать за пределами метода, в котором они вызываются.Или они передаются от метода к методу.
Цепочка владения
Когда один объект существует как поле экземпляра внутри другого, вы должны release
"принадлежащий""(или" дочерний ") объект, когда объект" владелец "(или" родитель ") исчезает.Это делается в методе dealloc
родительского объекта:
- (void) dealloc {
[child release]; // child was declared as an instance variable
[super dealloc];
}
Время жизни программы
Когда объект предназначен для существования в течение времени жизнипрограмме обычно вообще не нужно вызывать release
, если только не требуется какая-то очистка ресурса.Вы можете поместить это в applicationWillTerminate:
, который вы можете найти в документации Apple.
(Возможно, вам следует избегать таких объектов, но это обсуждение другого вопроса.)