IOS-代理模式

來源:互聯網
上載者:User

標籤:

代理設計模式的作用:

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-代理模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.