標籤:
代理設計模式的作用:
1.A對象監聽B對象的一些行為,A成為B的代理
2.B對象想告訴A對象一些事情,A成為B的代理
代理設計模式的總結:
如果你想監聽別人的一些行為,那麼你就要成為別人的代理
如果你想告訴別人一些事情,那麼就讓別人成為你的代理
代理設計模式的開發步驟
1.擬一份協議(協議名字的格式:控制項名 + Delegate),在協議裡面聲明一些代理方法(一般代理方法都是@optional)
2.聲明一個代理屬性:@property (nonatomic, weak) id<代理協議> delegate;
3.在內部發生某些行為時,調用代理對應的代理方法,通知代理內部發生什麼事
4.設定代理:xxx.delegate = yyy;
5.yyy對象遵守協議,實現代理方法
樣本程式:
程式結構如下,控制器將作為footer類的代理,並且實現代理類中的方法,在footer類中判斷控制器有沒有實現代理類中的方法,如果有就會調用控制器中的代理方法。
1.控制器和footer類的關係圖如下:
2.在footer類的標頭檔中,
先聲明好LYLoadMoreFooterDelegate代理,可以認為就是一個提供方法的介面,<NSobject>表示支援任何對象,@optional表示下面的方法實現方式為非強制。然後聲明一個代理對象delegate,這個對象要求為實現了<LYLoadMoreFooterDelegate>協議(介面)的對象(就是下面的控制器對象,不管是誰作為被賦值為這個對象都必須實現了代理或者說介面的方法)。
3.在footer類的.m檔案中,
在需要調用代理類的代理方法的地方,首先判斷下代理類是否真的實現了需要調用的代理方法,如果有實現就調用。
4.在控制器.m檔案中,
首先要實現 LYLoadMoreFooterDelegate 這個(代理/介面)。
然後在首次載入的方法中,執行個體化出footer類,並且給footer類的delegate對象賦值為self,表示自己成為footer對象的代理,下面的方法正是成為代理後要實現的方法。
IOS-代理模式