我认为,除了名称之外,协议更适合用作类之间的“接口”。它们完成所有的工作(公开属性和方法),并且除了Objective-C的动态特性以外,不同的类可以实现相同的协议,这是一个巨大的优势。那么为什么我们仍然使用@interface
?与协议相比,它们带来了什么优势? (我希望能获得更多的这个问题不是“他们是在他们做什么明确的”或“封闭,没有建设性”。)为什么我们使用接口而不是协议?
0
A
回答
0
委托协议需要被定义为这样的
@protocol
//methods
@end
它可以放在任何.h类中,只需要在你打算使用它时导入它。
协议不像java接口,协议是允许两个类一起工作的适配器。基本上它说,如果你想让A类向你发送有关它的状态和行为的消息,这些是你将必须实现的委托给它的方法。它不像一个接口,因为一个接口说如果你想要继承这个类,你必须实现这些方法,该协议说,如果你想与这个类交互,你必须实现这些方法,所以它有点不同。
+1
I不明白你为什么将协议链接到代表。认为更大(多态)。 – Meda
相关问题
- 1. 为什么我们不能在WCF中使用抽象类而不是接口?
- 2. 为什么我们需要在这里通用?协议不够?
- 3. 为什么我们在voip上使用sip协议?
- 4. //,而不是协议://
- 5. 为什么我们不能运行Web的有状态协议?
- 6. 为什么有人愿意使用Tcp协议托管WCF而不是使用基本的Http协议?
- 7. 为什么使用协议,不直接调用方法?
- 8. 什么是“协议相对”/ /调用(即而不是http://或https://)?
- 9. 为什么我们不使用Repeater Control而不是Gridview Control?
- 10. 为什么我们不使用lite-server而不是Gulp?
- 11. 为什么我们使用HTTP而不是远程调用?
- 12. 接口 - 为什么使用它们?
- 13. 什么是TDS协议版本8.0,为什么要使用它?
- 14. 我使用什么协议? RTSP?
- 15. 为什么我们在selenium中使用set窗口句柄而不是列表?
- 16. 为什么webFrameLoadDelegate协议不起作用?
- 17. 什么是ExternalAccessory协议使用IOS
- 18. 为什么我们使用`#include“stdafx.h”`而不是`#include <stdafx.h>`?
- 19. 为什么我们主要使用LocalDB而不是SQL Server?
- 20. 为什么我们使用`as foo(geom)`而不是`As geom`
- 21. 为什么我们使用ApacheHttpClient而不是HttpURLConnection?
- 22. 为什么SQLBRITE和我们为什么使用它而不是SQLite?
- 23. 为什么我们需要IAudioRenderClient接口
- 24. 为什么我们要实现接口?
- 25. FPGA接口协议
- 26. 当我们提取请求时,为什么我们使用Like而不是==?
- 27. 为什么我们需要pop3或Imap协议?
- 28. 为什么我们需要目标C中的协议?
- 29. 我们什么时候使用接口扩展接口
- 30. 为什么我们使用接口引用一个子对象?
你问OO类和接口(其中的OBJ-C调用接口和协议)之间的差异。这是一个非常基本的面向对象原则问题。 –
您可能会在http://programmers.stackexchange.com而不是这里找到您正在寻找的讨论。 –
@MikeWeller如果你认为这是重复的,你没有阅读我的问题。类==界面如何? – Meda