Если вы autorelease
address1
, вы потеряете право собственности на объект, а без каких-либо других владельцев он будет освобожден.Вам нужно было бы autorelease
, если бы вы это делали,
self.address1 = [[NSString alloc] initWithString:streetAddress];
, что неправильно, поскольку вы бы дважды вступили во владение и отказались бы от него только один раз в методе dealloc
.Правильный путь был бы,
self.address1 = [[[NSString alloc] initWithString:streetAddress] autorelease];
Прямое назначение выше работает, только если ему нужно было присвоить значение один раз.Если он будет назначен снова, вы потеряете ссылку на более раннюю ссылку, и ваше приложение утечет.Так что было бы неплохо использовать здесь методы доступа к свойствам, которые гарантировали бы, что старые значения были освобождены.
Еще одна вещь, связанная со строками, заключается в том, что вы будете копировать их, так как не хотите, чтобы они мутировали после назначения, таксвойство должно быть объявлено как @property (nonatomic, copy)
, а не как сейчас.