【问题标题】:Purpose of forward class declaration of self?自我前向类声明的目的?
【发布时间】:2016-08-13 18:36:43
【问题描述】:

我正在查看SWRevealViewController 的代码,这是一个流行的库/cocoapod,在 SWRevealViewController.h 中我注意到以下内容:

@class SWRevealViewController;

我知道何时在其他头文件中使用头文件的前向类声明,但我不明白这个声明在同一个类中提供了什么好处。是我遗漏了什么还是这段代码什么也没做?

【问题讨论】:

    标签: objective-c swrevealviewcontroller


    【解决方案1】:

    根本不需要那条线。但是需要对协议进行前向声明。

    通常,当协议在类之前声明并且协议需要对类进行引用时,您会看到类的前向声明。

    在这种情况下,类在协议之前声明。因此必须向前声明协议,因为该类引用了协议(在delegate 属性中)。

    不需要同时声明类和协议。

    【讨论】:

      【解决方案2】:

      你是对的——如果在该类的 @interface 出现之前没有任何其他声明使用它,那么 @class 前向声明什么也不做。

      the current state of SWRevealViewController.h on github 中,声明按以下顺序出现:

      @class SWRevealViewController;            // fwd declaration of class
      @protocol SWRevealViewControllerDelegate; // fwd declaration of protocol
      @interface SWRevealViewController;        // actual class definition
      @protocol SWRevealViewControllerDelegate; // actual protocol definition
      

      按照这种顺序,类定义需要协议的前向声明,但类的前向声明未被使用。

      但是,它也不会造成任何伤害。如果作者要颠倒类和协议定义的位置,那就相反了(协议需要类的前向声明,而前向协议声明将不被使用)。这只是风格上的腰带和吊带问题。

      【讨论】:

        猜你喜欢
        • 2011-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多