да, это утечка памяти, однако, если XYZ объявлен как свойство, например
@property (nonatomic, retain) XYZ* xyz;
- (void)dealloc
{
self.xyz = nil;
[super dealloc];
}
это не утечка памяти, может быть те, что вы видели, были на самом деле?
Edit:
тогда это не утечка памяти, причина в том, что сеттер создается свойством, это будет что-то похожее на приведенное ниже
- (void)setXYZ:(XYZ *)newXyz
{
[xyz release];
xyz = [newXyz retain];
}
, поскольку newXyz равен nil, отправка сохранения в nil ничего не делает, в то время как установщик освобождает старый xyz. В этом случае память управляется должным образом