1

尽管使用关联引用似乎是最广泛使用的伪造类别变量的方法,但我不禁将其视为一种 hack。我可能是错的。于是这个问题。所以,我知道 Apple 对许多框架类使用类别,并且在 3.1 之前(当添加关联引用时)他们这样做了。这让我想知道,他们是以不同的方式做的吗?Apple 是否推荐以这种方式使用关联引用?(任何支持这一点的文档?)从设计的角度来看,向类别添加存储是要避免的吗?

4

1 回答 1

1

关联对象不是hack,因为它们是作为“现代”运行时中的标准函数提供给我们的。

你是对的,在“现代”运行时之前没有实现关联对象,但是苹果对它们没有用处。如果他们希望将变量添加到一个类,它是通过在主类中结合一个显式的 setter/getter/internal iVar 来完成的(你会注意到这一点,尤其是像 NSSplitView 这样的旧 Cocoa 类)(因为你为什么需要如果您拥有该框架,是否使用关联对象?)Apple 使用类别是将相似功能组合在一起的旧方式,类似于语言级别#pragma mark -

于 2013-02-13T14:54:58.087 回答