为什么在所有方法都是可选时使用Objective-C协议?

问题描述:

我总是有一个协议应该帮助我实现某些方法的印象,所以我的对象会响应某些消息。如果我忘记一个方法或者输入错误,编译器会告诉我。为什么在所有方法都是可选时使用Objective-C协议?

但是有什么用时,所有的方法都是可选的设置方案的一类?就像在NSSpeechSynthesizerDelegate协议中一样。编译器不会提醒我实现某些方法,他也不会告诉我是否以错误的方式编写方法名称。即使没有协议,程序也能正常工作。

如果您实现自己的委托协议,你会得到编译器警告,如果你尝试调用方法,而他们正在申报某处(x可以不选择回应...)。

它还与文档和代码完成有助于定义的协议。如果您想知道哪些委托方法受支持,您只需查看相应的头文件(或从其中生成的文档页)即可。

当你开始输入你的类的新方法,Xcode是也足够聪明,建议从协议的方法签名,你的类符合。

如果您完全不需要它们,您可以省略所有可选方法和的协议Doc说,

但是,一个Objective-C程序不需要使用协议。与类定义和消息表达式不同,它们是可选的。一些Cocoa框架使用它们;有些不。这一切都取决于手头的任务。

如果你不想要这些协议的帮助,你可以简单地省略它。

因为你的程序不一定对感兴趣,但是一些。您执行的重要部分是,其中

在OOP中是常见的程序通过接口(目标C协议接口)不执行,因为这是关心如何实现一个坚实的软件架构,在你没有一个灵活而强大的方式类实现,但只有它匹配某个接口。

:( http://www.google.com/search?hl=en&source=hp&biw=1436&bih=768&q=program+by+interface+not+by+implementation&oq=program+by+inter&aq=2j&aqi=g-j2&aql=&gs_sm=e&gs_upl=849l7924l0l10059l20l16l2l3l3l0l283l1295l7.3.1l11l0一个对谷歌有关的说法搜索)