我读到了一个堆栈溢出答案,该答案将对象上的strong
属性与狗的皮带进行了比较。对于每个带有强烈参考的声明,都会在狗身上添加一条新的皮带。一旦每个遛狗的人都回家(或者一旦每个具有强参考的物体解除分配),狗(分配的内存)就可以被释放。我想事情就是这样。如果我完全屠杀了原始海报,我向原始海报道歉。无论如何,这是我的情况。我有一个NSDocument
子类,它有一个名为 backgroundColor
的属性。这是我的NSDocument
子类正在做的访问器/突变器:
- (NSColor *)backgroundColor
{
return self.window.backgroundColor;
}
- (void)setBackgroundColor:(NSColor *)color
{
self.window.backgroundColor = color;
}
因此,我的文档对象实际上并不拥有"皮带",但与此同时,让那只狗继续行走很重要,否则文档将没有背景颜色。现在我想我只是把自己和这个比喻混淆了。归根结底,我只想知道是将"转发"的属性声明为strong
还是weak
。
谢谢!
不要将其声明为属性。提供您现有的 getter 和 setter 实现就足够了。属性在这里没有帮助,因为没有要存储的值。
由于你有自己的二传手和getter,并且你不使用属性ivar,strong
或weak
没有任何重要性。从不读取或分配 ivar。
我可能会选择strong
因为[UIWindow backgroundColor]
strong
但weak
工作原理完全相同。