В основном у меня такой сценарий:
//in interface header
@property(nonatomic,retain)OtherClass *otherClass;
//implementation
- (id)initWithOtherClassInstance:(OtherClass*)otherClass
{
if (self != [super init])
return self;
self.otherClass = otherClass;
return self;
}
- (void)dealloc
{
//Do I need to release otherClass ?
[otherClass release];
[super dealloc];
}
Мне интересно, должен ли я выпускать переменную экземпляра, для которой не было явно указано alloc, new или copy? Руководства по управлению памятью говорят, что я не должен этого делать, но меня беспокоит то, что self.otherClass = otherClass
сохранит переменную экземпляра и, таким образом, приведет к утечке, когда я решу не выпускать ее в методе dealloc
.
Более того, освобождение переменной экземпляра в методе dealloc
не генерирует исключение, которое было бы в случае, если оно было перевыпущено.
Имеют ли смысл мои рассуждения здесь, и что лучше всего делать в таком случае?