IOS消息机制-委托(ptotocol与delegate)
?
protocal : 協議,protocal是一種語法,提供統一的接口給遵守協議的類使用。
delegate : 委托,是Coaoa中常用的一種設計模式,把自己的類需要做的一些事情委托給另一個類去做,實際做事的類就是delegate。而要寫出delegate這樣的東西需要protocal的語法來協助完成。
要寫一個委托的模式的步驟:
寫一個protocal,指明你需要你的類的delegate去干的事(.h文件)
你的類包含一個你的delegate類的弱引用(.h文件)
在你的類實現里面在特定的事件發生時讓這個delegate去執行你想干的事(.m文件)
在使用你的類時,創建你的類的一個對象,并指明對象的delegate是誰(使用類時)
MVCDemoView * view = [[MVCDemoView alloc] init];
view.delegate = ?xxx;
這個xxx就很重要了,xxx需要實現你的那個遵守你的MVCDemoViewDelegate協議并實現它的方法。
最后,在你的類showTheModel的時候就會找到它的delegate xxx, 然后,xxx就會執行它實現的MVCDemoViewDelegate協議的方法啦。
上面的完整例子請參閱另外一篇文章《IOS之MVC》中的小例子。
使用委托需要注意的幾點:
1.協議中的方法默認為required,當你需要說明方法是必須實現的時候使用required,可選的方法時使用optional關鍵字。這兩個關鍵字的修飾范圍是遇到下一個關鍵字之前;
2.delegate必須為weak,否則A對象有B屬性,而B屬性的delegate是A時會造成循環引用,造成內存泄露;
3.為了使用delegate模式,消息的發送者必須知道消息的接受者是誰,并把你接受者賦給發送者的delegate屬性,而反過來則不需要,接受者只是遵守那樣的協議就可以了,松耦合;
4.Cocoa框架中有很多delegate,如UITableViewDelegate,UITexiFieldDelegate,UIAlertViewDelegate。
轉載于:https://www.cnblogs.com/xinguan/p/3641620.html
總結
以上是生活随笔為你收集整理的IOS消息机制-委托(ptotocol与delegate)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pureMVC介绍及学习
- 下一篇: 1042: [HAOI2008]硬币购物