1、協議的基本概念
設計模式
協議的聲明看起來比較相似一個類的接口,不一樣的是協議沒有父類也不能定義變量。協議是一種特殊的程序設計結構,用於聲明專門被別的類實現的方法。協議在如下場合很是有用:ui
一、須要由別的類實現的方法。
spa
二、聲明未知類的接口。
設計
三、兩個類之間的通訊。
代理
2、協議的基本特色
code
一、協議能夠被任何類實現其方法。
對象
二、協議自己不是類,他是定義了一個其餘類可實現的接口。
接口
三、類目也能夠採用協議。
開發
3、協議的聲明與實現
io
一、協議中的關鍵字
@required:表示必須強制實現的方法
@optional:表示能夠選擇實現的方法
/*協議中的聲明*/ @protocol HelloProtocol <NSObject> @optional - (void)optionalMethod1; - (void)optionalMethod2; @required - (void)requiredMethod1; @end /*採用了該協議*/ @interface Person:NSObject <HelloProtocol,OtherProtocol> @end |
@implementation Person - (void)requiredMethod1 { }//該方法必須實現 - (void)optionalMethod1 { }//該方法能夠不用實現 - (void)optionalMethod2 { }//該方法能夠不用實現 @end |
// // HelloProtocol.h // Protocol // // Created by moki on 14-8-5. // Copyright (c) 2014年 Santai. All rights reserved. // #import <Foundation/Foundation.h> @protocol HelloProtocol <NSObject> @required - (void)requiredMethod1; @optional - (void)optionalMethod1; - (void)optionalMethod2; @end
// // Person.h // Protocol // // Created by moki on 14-8-5. // Copyright (c) 2014年 Santai. All rights reserved. // #import <Foundation/Foundation.h> #import "HelloProtocol.h" @interface Person : NSObject <HelloProtocol> @end
// // Person.m // Protocol // // Created by moki on 14-8-5. // Copyright (c) 2014年 Santai. All rights reserved. // #import "Person.h" @implementation Person - (void)requiredMethod1 { NSLog(@"這是必需要實現的一個協議方法"); } - (void)optionalMethod1 { NSLog(@"這是能夠不用實現的一個協議方法1"); } - (void)optionalMethod2 { NSLog(@"這是能夠不用實現的另外一個協議方法2"); } @end
5、代理(委託)設計模式
一、代理設計模式的基本概念
代理是指一個對象機構會對另外一個對象中的行爲發生變化時作出的反應。如,當你將一顆石子丟入水中,水面會泛起波紋。總而言之,代理設計模式的基本思想--兩個對象協同解決問題,一般用於對象之間的通訊。
二、代理設計模式的基本特色
簡化了對象的行爲,最小化了對象間的耦合度;
使用代理,通常來講無需子類化
簡化了咱們應用程序開發,既容易實現,又靈活