Синтезированный сохраненный сеттер выглядит так:
- (void)setValue: (id)newValue
{
if (value != newValue)
{
[value release];
value = newValue;
[value retain];
}
}
В вашем случае у вас есть два допустимых метода:
1) Создайте временную переменную, alloc / init (= retained),установите свойство, отпустите.
IView *tempOverlay = [[UIView alloc] initWithFrame:CGRectMake(160.0f, 70.0f, 150.0f, 310.0f)];
self.overlay = tempOverlay;
[tempOverlay release];
2) Без временной переменной, установите непосредственно на ivar.
overlay = [[UIView alloc] initWithFrame:CGRectMake(160.0f, 70.0f, 150.0f, 310.0f)];
ОБНОВЛЕНИЕ: Если вы используете метод 2), вам нужно явно обработатьуправление остальной памятью (не только сохранение), освобождая любое предыдущее значение, которое оно может иметь раньше, если это необходимо.Если это делается только один раз в init
(например), вы можете просто вставить [overlay release];
в dealloc
.