Да, поскольку вы не можете гарантировать, что «другое» время жизни будет таким же, как и время жизни создаваемого вами объекта, вы должны убедиться в этом, сохранив его в методе init (и не забудьте освободить его в методе dealloc).Таким образом, верно следующее:
...
if(self = [super init]){
anObject = [another retain];
}
...
Еще одна вещь - определяя сохраняющееся свойство для объекта, вы говорите, что вступаете во владение этим объектом, и, следовательно, вы должны освободить его в методе dealloc.Если вы не сохраните «другой» параметр в методе init, он будет в конечном итоге освобожден (либо в dealloc, либо в методе setter) без сохранения - поэтому ваше приложение может завершиться с ошибкой EXEC_BAD_ACCESS
.