在公共接口和私有接口/实现文件上声明协议之间的区别

tim*_*one 20 objective-c ios

以这些方式宣布这些协议之间的区别是什么?只是.h文件中的那些是公开的吗?

in .h file:
@interface TestViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

in .m file:
@interface TestViewController () <UISearchBarDelegate, UISearchDisplayDelegate, UIAlertViewDelegate, MKMapViewDelegate, CLLocationManagerDelegate>
Run Code Online (Sandbox Code Playgroud)

rma*_*ddy 27

将协议添加到.h文件时,这会告诉每个人包含该类遵循给定协议的头文件.

将协议添加到.m文件时,这实际上是该类遵守协议的私有指示.只有实现知道.

当外部类需要知道类遵守协议时,您应该只使用第一个表单(在.h文件中).只有实现关心时,您应该使用第二种形式(在.m文件中).

在您给出的示例中,其他类不太可能需要了解遵守表视图协议的类.那些应该在.m文件中.任何其他类都不太可能需要了解搜索协议.这些是实现细节.这些属于.m文件.

可能存在两种情况都使用的情况.这可以.

这是我的指南.将它放在.m文件中,除非您特别需要让其他类知道协议的使用.