Мне немного любопытно узнать о последних строках в двух примерах, представленных ниже (например, planetName = [значение ??????]). Я понимаю, что 1-й пример с копией лучше всего, так как копия string для защиты от исходного исходного объекта, который изменяется в другом месте.Setter: [value copy] или [value release]?
Я также немного смущен последней строкой во втором примере, опять же я понял, что объект значения передавался в метод, я думаю, меня путают, поскольку значение сохраняется без связанного выпуска? Может кто-то меня прямо посадил?
- (void)setPlanetName:(NSString *)value {
if (planetName != value) {
[planetName release];
planetName = [value copy];
}
}
.
- (void)setPlanetName:(NSString *)value {
if (planetName != value) {
[planetName release];
planetName = [value retain];
}
}
Изначально я хочу избежать сбора мусора, чтобы лучше понять как все работает, это также в первую очередь причина, по которой (изначально) я не использую свойство и не синтезирую. Спасибо за помощь, очень ценю. – fuzzygoat
Просто любопытно, если в первой версии я использую постоянную строку @ «Земля» для значения, о котором вы говорили, что копия ударяет значение сохранения, в этом случае это должно быть до 2? Если да, то как они освобождаются, я предполагаю, что с константой строки один хранится в сегменте данных и не нуждается в выпуске, другой - тот, который мы в конечном счете освобождаем от метода dealloc? Просто спрашивайте, как вы сначала имеете «значение», а затем вы делаете копию, так что 2, если я не ошибаюсь. – fuzzygoat
Одним словом, не беспокойтесь об этом и не беспокойтесь о том, чтобы сохранить счет; значение его в любой момент времени является детальностью реализации. Просто убедитесь, что сохраненные вами данные сбалансированы версиями в вашем коде. – bbum