我正在为一个项目编写一个 Cocoa API,该 API 需要一个委托。我提出的协议将所有方法声明为可选,但我为什么要这样做,而不是仅在头文件中记录委托方法并将普通 id 作为参数?
Michael Bishop
问问题
256 次
3 回答
6
为了您的用户的利益。如果对象接受了符合某些协议的委托,并且他们传入了其他内容,编译器可以告诉他们。如果您使用 id 并将类别用作委托方法接口,则这是不可能的。
于 2009-03-27T19:54:54.697 回答
2
因为拥有“所有这些方法”可选并不等同于允许“任何你想发送的东西”。
于 2009-03-27T19:54:53.683 回答
0
它还生成在 IDE 中更有用的代码。例如,如果我在看
@interface MyController : NSObject <FooBarDelegate> {
}
@end
我可以在 Xcode 中命令+双击跳转到 FooBarDelegate 的定义。对于类别,没有正式的代表意向声明。
此外,@required 可能会成为未来计划关于向后二进制兼容性和新的首选方法签名的问题。
于 2009-05-29T10:07:41.733 回答