导入委托协议的正确方法

Jam*_*eir 3 import protocols header ios

我尝试在我的头文件中尽可能少地导入(使用实现文件),对于类我们可以使用@class,但是协议呢?如果我尝试使用@protocol声明我将在该标头中使用的协议,我会收到警告"无法找到'...'的协议定义"

只是通过导入执行协议声明的标头来处理这个问题的正确方法是什么?(所以一个.h文件导入另一个.h)

ListViewController.h的示例:

#import <UIKit/UIKit.h>
#import "JTRevealSidebarV2Delegate.h"  // is this the best way?

@class List;

@protocol JTRevealSidebarV2Delegate;  // this produces a warning.

@interface ListViewController : UIViewController <UITableViewDataSource, UITableViewDelegate, JTRevealSidebarV2Delegate>
Run Code Online (Sandbox Code Playgroud)

Ste*_*ton 5

你需要的#import.@protocol没有给编译器足够的信息来进行类型检查.

(当你声明一个属性类型的属性时,List它需要知道的是你真正的意思List而不是,比方说Lisp.指向任何对象的指针大小相同.另一方面,协议包含一个类的东西列表需要做的.它需要知道什么"东西"做任何有用的事情.)