成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Cocoa學習筆記 MVC架構分析

移動開發 iOS
本文介紹的是Cocoa學習筆記 MVC架構分析,很詳細的介紹了MVC架構,我們先來看內容。

Cocoa學習筆記 MVC架構分析是本文要介紹的內容,Cocoa是Mac OS和iPhone OS上的開發框架,使用Objective-C做為開發語言。當然,在代碼中也可以嵌入C和C++的語句。初識Objective-C時會覺得它的語法很奇怪,但本質上和其他面向對象語言都差不多。具體語法大家可以參考相關文檔。

Cocoa框架中:

所有的控件、窗口等都繼承自 UIView,對應MVC中的 V。UIView及其子類主要負責UI的實現,而UIView所產生的事件都可以采用委托的方式,交給UIViewController實現。對于不同的UIView,都有相應的UIViewController 對應MVC中的C。比如在iPhone OS上常用的UITableView,它所對應的Controller就是UITableViewController。至于MVC中的M,那需要根據用戶自己的需求來實現了。

下面看一下一個自定義UIView的架構是怎么樣的。這之前要認識一下Objective-C中的幾個重要的關鍵字。

@interface 定義一個類,這個很容易和Java中的interface混淆。

@protocol 定義一個協議,我跟喜歡把它理解成一個接口,相當于Java中的interface。

Objective-C只支持單繼承,但可以實現多個協議(接口),語法如下:

Objective-c代碼 

  1. @interface Child : Parent <Protocol1,Protocol2>     
  2. {     
  3. //成員變量定義     
  4. }     
  5. //成員方法,類方法,屬性定義     
  6. @end    
  7. @interface Child : Parent <Protocol1,Protocol2> 
  8. {  
  9. //成員變量定義  
  10. }  
  11. //成員方法,類方法,屬性定義  
  12. @end   

有了以上的知識后,我們就可以來定義自己的UIView了。

首先是定義一個UIView的子類。

Objective-c代碼 

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

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

Objective-c代碼 

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

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

Java代碼 

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

定義都完成了,到這里其實還看不出這三者是怎么聯系起來的。那接下來就要看看,MyUIView和MyUIViewController的具體實現了。

首先是MyUIView的實現代碼,假設在MyUIView在發生某個事件后會調用doSometing方法。

Objective-c代碼 

  1. - (void)doSomething     
  2. {     
  3.     if( delegate != nil )  //這里的delegate就是UIView定義時候的一個委托對象     
  4.     {     
  5.         [delegate func1]; //[]表示對一個對象發消息,如果在Java中會寫成delegate.func1()     
  6.     }     
  7. }    
  8. - (void)doSomething  
  9. {  
  10.     if( delegate != nil )  //這里的delegate就是UIView定義時候的一個委托對象  
  11.     {  
  12.         [delegate func1]; //[]表示對一個對象發消息,如果在Java中會寫成delegate.func1()  
  13.     }  
  14. }  

上面的代碼中 nil 相當于 Java中的 null,這里的意思就很明顯了,如果delegate委托對象不為空,則調用相應的方法,但是這個委托對象的方法在哪里實現呢。可以看一下MyUIViewController的定義,它實現了MyUIViewDelegate。所以這個方法當然是由它來實現。代碼如下

Objective-c代碼 

  1. - (id)init     
  2. {     
  3.     MyUIView *myView = [[MyUIView alloc] init]; //對MyUIView進行初始化     
  4.     myView.delegate = self; //將MyUIViewController自己的實例作為委托對象     
  5.     self.view = myView;      
  6. }     
  7.     
  8. - (void)func1     
  9. {     
  10.     //具體實現,可以加入Model相關的代碼     
  11. }    
  12.  
  13. - (id)init  
  14. {  
  15.     MyUIView *myView = [[MyUIView alloc] init]; //對MyUIView進行初始化  
  16.     myView.delegate = self; //將MyUIViewController自己的實例作為委托對象  
  17.     self.view = myView;   
  18. }  
  19.  
  20. - (void)func1  
  21. {  
  22.     //具體實現,可以加入Model相關的代碼  
  23. }  

這么一來整個,整個代碼的線路就明白了。

1.MyUIViewController初始化

2.MyUIViewController初始化時初始化MyUIView,并且將自己作為委托對象賦值給MyUIView

3.MyUIView發生事件,調用(回調)委托對象的方法,其實就是調用MyUIViewController的方法。

以上只是對Cocoa的編程模型進行了簡單的分析,和大家交流一下。花了1個月時間學習Objective-C和Cocoa框架,感覺并不難學,熟悉面向對象的同學應該能比較快上手。當然,它的語法是比較奇怪,我到現在有時還會寫錯,但習慣成自然嘛。對Mac OS和iPhone OS平臺感興趣的同學可以去研究一下,挺有意思的。

小結:Cocoa學習筆記 MVC架構分析的內容介紹完了,希望本文對你有所幫助。

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-07-22 15:50:06

Cocoa MVC 視圖

2011-07-26 15:29:36

Cocoa 模式

2011-05-11 15:27:58

Windows OOPCocoa MVCCocoa

2011-07-26 10:42:00

Cocoa Cocoa2d 游戲

2011-08-15 16:09:44

Cocoa對象Objective-C

2011-07-08 16:09:54

Cocoa Cocos2d 動作

2011-07-08 16:27:52

Cocoa Cocos2d 動作

2011-07-26 15:14:24

蘋果 Cocoa 內存

2011-07-20 10:31:49

Cocoa Slider 顏色

2011-07-25 14:32:40

Cocoa 框架 函數

2011-08-11 15:46:55

CocoaCocoa Touch框架

2009-08-28 10:57:42

linux操作系統linux學習目錄架構

2011-08-10 18:37:32

CocoaMac OS X

2011-07-07 13:51:24

Cocoa 框架

2011-07-07 13:39:14

Cocoa 框架

2011-11-24 21:54:05

優酷架構

2011-08-16 14:59:31

IOS開發ViewDidUnloiOS 5

2012-02-23 11:06:18

JavaPlay FramewPlay!

2011-07-07 13:30:32

Cocoa Core

2016-12-19 11:17:48

架構 MVC
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品成人在线 | 国产午夜亚洲精品不卡 | 国产精品久久777777 | 欧美毛片免费观看 | 在线日韩中文字幕 | 久久国产免费 | 天天干天天插天天 | 国产精品美女久久久久久免费 | 国产精品视频一区二区三区不卡 | 成人做爰999 | 婷婷色国产偷v国产偷v小说 | 狠狠操狠狠操 | 亚洲区中文字幕 | 精品综合久久 | 成人日批视频 | 国产一区不卡在线观看 | 91精品国产综合久久婷婷香蕉 | 操皮视频 | 操一草 | 久久久久久久91 | 日本成人中文字幕 | 日韩精品一区中文字幕 | 97超碰在线免费 | 国产精品入口麻豆www | 欧美小视频在线观看 | 91精品国产乱码久久久久久 | 四虎影院新地址 | 男人亚洲天堂 | 蜜桃av一区二区三区 | 午夜电影网 | 国产福利精品一区 | 午夜播放器在线观看 | 欧美成人a | 蜜桃视频一区二区三区 | 国产精品欧美一区二区 | 欧美一级在线观看 | 毛片国产| 成人a网 | 亚洲精品视频网站在线观看 | 日韩欧美精品 | 少妇一区在线观看 |