objective-c中的協定(protocol)類似于常用的接口,協定(protocols)中定義的方法,在類中實作。
@protocol myfirstprotocol
- (void)myfirstprotocolmethod;
@end
在iphone os中,協定(protocol)通常用來實作委托對象(delegate object)。委托對象(delegate object)一般用來自己定義行為或者動作,也就是調用自己定義方法,但自己不實作該方法,委托其它的類來實作該方法。
uiapplication類就是一個典型的例子。uiapplication類中定義了一個應用程式應有的行為或者動作。而不是強制讓你的uiapplication子類去接受目前應用程式的狀态消息并做出相應處理。uiapplication類通過調用特殊的方法,來傳遞這些消息給它的委托對象。這個委托對象通過實作名為uiapplicationdelegate的協定(protocol),之後就可以接受到目前應用程式的狀态消息并做出相應處理。比如記憶體不夠的錯誤,應用程式被中斷等重要消息。
下面是一個helloworld代碼:
main.m