Objective-C設計模式(MVC)的實現,以及協議與委託的運用

來源:互聯網
上載者:User

  在iPhone的開發過程中經常要用到介面,而蘋果公司為其設計了很好的管理思路,就是採用常用的MVC模式,在iPhone中,所有的圖形控制項都是繼承於UIView,就是"V".UIView及其子類主要負責UI的實現,而UIView所產生的事件都可以採用委託的方式,交給UIViewController實現.對於不同的 UIView,都有相應的UIViewController 對應MVC中的"C".對於"M",也就是資料模型,那就留給使用者自己發揮了.

  Objective-C只支援單繼承,和java很像,單可以實現多個協議(Protocol).

首先,定義個View

1.@interface MyUIView : UIView {   
2.
3.
4.  //定義一些控制項
5.
6.  id<MyUIViewDelegate> delegate; //這個定義會在後面的解釋,它是一個協議,用來實現委託。
7.
8.}
9.
10.//定義一些控制項設定方法
11.@property id<MyUIViewDelegate> delegate; //定義一個屬性,可以用來進行get set操作
12.
13.@end

然後定義一個Protocol,按照Cocoa的習慣,一般它以delegate結尾,熟悉C#的同學應該知道它的意義.其實不論是介面,委託,還是回呼函數,本質上都做了一件事情.就是定義了一個操作契約,然後由使用者自己來實現它的具體內容.

1 @protocol MyUIViewDelegate  
2 //這裡只需要聲明方法
3 - (void)func1
4 - (int)func2:(int)arg
5
6 @end
 

完成以上兩步之後就需要設計自己的UIViewController了.一般簡單的做法,可以讓這個Controller來實現上面定義的MyUIViewDelegate.在Cocoa架構中,很多控制項和它的Controller都是採用的這種方式.

1.@interface MyUIViewController : UIViewController <MyUIViewDelegate>  
2.{
3.//成員變數
4.}
5.
6.//成員方法,類方法,屬性
7.
8.@end

定義好了,現在,你只要在MyUIViewController中聲明MyUIView成員變數,並把自己作為委派物件傳給MyUIView,就可以成為MyUIView的代理,這樣,當MyUIView某事件發生時就可以調用MyUIViewController中實現的委託方法了.

  說的很是淺顯,具體實現請自己完成,自己練習.

by MAC-z

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.