我的理解是,协议就像其他语言中的接口——它们声明了预期的方法——而类别允许您向现有类型添加新方法(甚至可能是您不拥有的类型。)
那么,为什么 iPhone SDK 有时会使用类别来声明委托类型?通常,我希望所有代表都输入 id<MyDelegateProtocol> 但有很多示例并非如此。
例如,参见 NSURLConnection。它的委托类型为“id”,并且“合同”被声明为 NSObject (NSURLConnectionDelegate) 上的一个类别。
那么:在这些情况下使用类别的动机是什么?