【发布时间】:2011-08-04 18:52:12
【问题描述】:
在几种情况下,您可能会覆盖超类的属性。
您声明了一个与它的名称和属性相同的属性 超类'。(因为如果你改变 属性你可以得到一个编译器 警告)。你可以合成 使用您创建的 ivar。什么是 这个的用途?或者有什么害处 可以吗?
如果超类在类扩展(类别 没有名字),那么它可能不是 在头文件中。如果你不 从标题中知道该属性 文件,可以声明同名 具有任何属性的财产或 你想要的课。但是 setter/getter 方法将覆盖 那些“秘密财产”。 我认为这只会造成伤害。但 因为你不知道从标题 文件,如何避免这种情况?
您可以将头文件中的属性声明为“只读”并在 类扩展将其重新声明为 “读写”。我认为这是 它可以做得很好。
我对这些情况的理解正确吗?而且我不知道第一种和第二种情况有什么好处。但是如果我想避免第一种情况,我可以在声明之前检查子类是否已经具有该属性。但是如果该属性不在公共头文件中,如第二种情况,我只是不知道该怎么办。
【问题讨论】:
标签: objective-c properties overriding class-extensions