【问题标题】:Is it possible to have private methods and properties visible to subclasses?是否可以让子类可以看到私有方法和属性?
【发布时间】:2011-01-14 01:10:30
【问题描述】:

我在这里要做的基本上是一个对子类也可见的类扩展。我想可以通过在单独的 Category 文件中声明私有方法和属性来实现效果,该文件具有独立于类的 @implementation 块。然后超类和每个子类可以#import 标头。这是我能想到的最好的了,但感觉像是不必要的文件污染,而且用类别实现私有方法的做法在很大程度上已被类扩展所取代。我认为这是不可能的,但我想问一下,比我更酷的人想出了更好的方法。

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    您可以按照自己的建议(在单独的标头中声明私有方法),但如果您愿意,可以使用扩展而不是类别。

    Apple 正是通过 UIGestureRecognizer 实现的。查看 UIGestureRecognizerSubclass.h。

    【讨论】:

    • 是的,同样的理念也适用于扩展,但无论你如何分割它,它都是一个额外的代码文件?
    • 要么就是这样,要么你可以做一些宏诡计。就像在你的子类的东西之前做#ifdef MY_CLASS_PRIVATE,然后在你的实现和子类中使用#define MY_CLASS_PRIVATE\n#import <MyClass.h>。不过,我更喜欢额外的文件,因为它更清楚子类应该做什么。
    • 啊,有趣。是的,我也会带上额外的文件。有趣的是,既然您已经指出 Apple 使用该选项,那么该选项如何更具吸引力。谢谢。
    猜你喜欢
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 2011-04-09
    • 2010-12-06
    • 2021-11-24
    • 1970-01-01
    相关资源
    最近更新 更多