我認爲,除了名稱之外,協議更適合用作類之間的「接口」。它們完成所有的工作(公開屬性和方法),並且除了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