Objetivo C: pergunta para iniciantes sobre alocação, retenção e liberação [duplicado]

Esta pergunta já tem uma resposta aqui:

bjective-C: alocação de objeto dentro do init de outro objeto (gerenciamento de memóri 3 respostas

Novo no OC, muitos anos em C, C ++, C #, a mente está meio confusa agor

Dado

// AnInterface.h
@interface AnInterface : NSObject  
{  
}  

@property (retain) SomeObject* m_Object;  

// AnInterface.m
#import "AnInterface.h"  

@synthesize m_Object;  

-init
{  
  self= [super init];  
  if(!self)  
    return (nil);  

  SomeObject* pObject= [[SomeObject alloc] init];  
  self.m_Object= pObject;  
  [pObject release];
}  

Tenho certeza de que o texto acima está correto. No entanto, por que não fazer:

self.m_Object= [[SomeObject alloc] init];  

Isso também funciona? Isso viola algum princípio de gerenciamento de memória? Parece que deve funcionar, uma linha em vez de três, mas tenho certeza de que devo estar perdendo alguma coisa ....

Qualquer insight seria apreciado.

questionAnswers(3)

yourAnswerToTheQuestion