为什么要让一个类私有地遵守协议?

Dav*_*ull 5 cocoa-touch protocols objective-c class-extensions

我一直在关注Apple的MVCNetworking示例项目,并且部分接口定义令AppDelegate我感到困惑.在.h文件中我们有:

@interface AppDelegate : NSObject
{
  ...
Run Code Online (Sandbox Code Playgroud)

但是在.m文件中我们有这个:

@interface AppDelegate () <SetupViewControllerDelegate>
  ...
Run Code Online (Sandbox Code Playgroud)

所以这个类是私有地符合协议.但是你为什么要这样做而不是在标题中公开声明呢?

BJ *_*mer 5

一般来说,你应该尽可能少公开曝光.当AppDelegate呈现SetupViewController时,可能会使用AppDelegate可能是SetupViewController的委托这一事实.没有其他类应该将AppDelegate设置为其他SetupViewController的委托,因此公开宣传该一致性是没有意义的.


Sea*_*ean 3

看起来该实现SetupViewController在其“私有”方法之一内部使用了 a presentSetupViewControllerAnimated:。由于视图控制器不可公开访问(通过属性或其他方式),因此无需从公共角度将类声明为符合协议。换句话说,协议仅与类的实现相关,而不与它所呈现的公共接口相关。