Поскольку сохранение и освобождение происходят в одном и том же методе, вы можете скопировать свойство в локальную переменную и затем поработать с ним:
UIView *someView = self.interestingView;
[someView retain];
//...do some stuff...
[someView release];
Это по крайней мере обеспечивает некоторую защиту в случае, есличасть "некоторого материала" может измениться self.interestingView
.И это, вероятно, также удовлетворит статический анализатор.
В общем, я бы избегал сохранять / освобождать переменные, которые возвращают свойства за пределами методов доступа для этих свойств, за исключением нескольких четко определенных ситуаций, таких как -dealloc
,Аналогично, избегайте непосредственного сохранения / освобождения результата доступа к свойству, как в [self.foo retain]
.Если это свойство будет изменено до того, как вы перейдете к выпуску, вы получите как утечку, так и, позднее, перевыпуск.