2011-09-23 84 views

回答

1

從蘋果文檔:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProtocols.html

協議聲明可以被任何類實現的方法。協議至少在三種情況下是有用的:

  • 要聲明的是,其它公司有望實現
  • 要將接口申報的對象,而隱藏其類
  • 到未分級類中捕獲的相似方法相關的

作爲一個例子,我還特別使用了協議來實現提供者模型,在這個模型中我抽象出系統的完整部分。例如,爲了更多地分離我的代碼,我可以創建一個數據提供者。我可以有一個SQLite提供程序,文件提供程序等...協議允許我去耦這些。

在這種情況下,每個提供者不會彼此繼承,但它們都實現相同的模式,其內部結構不同。將協議想象成符合的模式 - 或者,如果您將協議看作接口,則可以使用協議。

希望有所幫助。

1

您可以在任何想要定義一組共享行爲而無需強制使用特定繼承樹的地方使用它。