Существует множество примеров того, как мы должны это делать, например:
- (void)setFoo:(NSString *)newFoo
{
if (foo != newFoo)
{
[foo release];//??
foo = [newFoo retain];
}
}
Я понимаю, что нам нужно освободить значение prev и затем назначить новое с помощью retain, так нам говорят в документации, но я не могу понять, что мы должны выпустить, если назначить foo = [newFoo retain] ; сделает foo просто новым значением с текущим счетчиком сохранения newFoo, и если даже счетчик сохранения foo был 5 раньше, он станет равным +1 к newFoo, или я что-то упущу и пойму неправильно. Почему мы не можем просто сделать:
- (void)setFoo:(NSString *)newFoo
{
if (foo != newFoo)
{
foo = [newFoo retain];
}
}