Слабая или сильная декларация свойства при возврате значения связанного представления?
Я прочитал ответ переполнения стека, который сравнил strong
свойства на объекте поводкам на собаку. Для каждого объявления, сделанного с сильной ссылкой, новый поводок добавляется к собаке. Как только каждый, кто выгуливает собаку, идет домой (или когда каждый объект с сильной ссылкой освобождается), собака (выделенная память) может быть освобождена. Я думаю, что так оно и было. Я прошу прощения у оригинального постера, если я полностью убил это. Во всяком случае, вот моя ситуация. у меня есть NSDocument
подкласс, который имеет свойство под названием backgroundColor
, Вот что мой NSDocument
подкласс выполняет аксессор / мутатор:
- (NSColor *)backgroundColor
{
return self.window.backgroundColor;
}
- (void)setBackgroundColor:(NSColor *)color
{
self.window.backgroundColor = color;
}
Итак, моему объекту документа на самом деле не принадлежит "поводок", но в то же время важно, чтобы собака продолжала ходить, иначе у документа не будет фонового цвета. Теперь я думаю, что просто путаю себя с метафорой. В конце концов, я просто хочу знать, объявлять ли "перенаправленные" свойства как strong
или же weak
,
Спасибо!
2 ответа
Не объявляйте это как собственность. Предоставления реализаций getter и setter как у вас достаточно. Имущество здесь не поможет, потому что нет смысла хранить.
Так как у вас есть свой собственный сеттер и геттер, и вы не используете свойство ivar, strong
или же weak
не имеет никакого значения. Ивар никогда не читается и не присваивается.
Я бы, наверное, пошел с strong
так как [UIWindow backgroundColor]
является strong
но weak
будет работать точно так же.