自我前瞻性宣言的目的?

时间:2016-04-20 20:38:33

标签: objective-c swrevealviewcontroller

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

@class SWRevealViewController;

我知道何时在其他头文件中使用标头的前向类声明,但是我不明白当它在同一个类中时该声明提供了什么好处。我错过了什么或者这段代码没有做任何事情吗?

2 个答案:

答案 0 :(得分:3)

根本不需要那条线。但是需要议定书的前瞻声明。

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

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

无需转发声明类和协议。

答案 1 :(得分:3)

您是正确的 - 如果在该类的@class出现之前没有任何其他声明使用,则@interface转发声明不会执行任何操作。

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

使用该顺序,类定义需要协议的前向声明,但类的前向声明未使用。

然而,它也不会造成任何伤害。如果作者要颠倒类和协议定义的位置,那么它是相反的(协议需要类的前向声明,并且前向协议声明将是未使用的)。它只是一种带式和吊带式的风格。