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

Objective-C動(dòng)態(tài)特性之protocol

移動(dòng)開(kāi)發(fā) iOS
Protocol在具體的使用過(guò)程中基本上采用了“Delegation”模式,即采用Protocol定義方法,然后不同的類使用不同的具體實(shí)現(xiàn),從而完成某個(gè)行為的多態(tài)。 在iOS的SDK類庫(kù)中大量使用了這樣的Delegate的模式,比方說(shuō)UITableViewDataSource定義了Table View如何使用數(shù)據(jù)源的一系列方法,開(kāi)發(fā)者需要使用Table View時(shí),就需要實(shí)現(xiàn)這一系列方法,然后把自己定義的Table View delegate給當(dāng)前對(duì)象。這樣,不同界面的Table View就可以基于自身對(duì)象的實(shí)現(xiàn)做不同的展現(xiàn)。

在Object-C中,Protocol被用來(lái)定義一組獨(dú)立于具體類的屬性和方法,其不具體實(shí)現(xiàn)這些方法,任何類都可以實(shí)現(xiàn)Protocol,Protocol可以繼承另一個(gè)Protocol,從特征上看Protocol的作用類似于Java世界的接口。

Protocol在具體的使用過(guò)程中基本上采用了“Delegation”模式,即采用Protocol定義方法,然后不同的類使用不同的具體實(shí)現(xiàn),從而完成某個(gè)行為的多態(tài)。 在iOS的SDK類庫(kù)中大量使用了這樣的Delegate的模式,比方說(shuō)UITableViewDataSource定義了Table View如何使用數(shù)據(jù)源的一系列方法,開(kāi)發(fā)者需要使用Table View時(shí),就需要實(shí)現(xiàn)這一系列方法,然后把自己定義的Table View delegate給當(dāng)前對(duì)象。這樣,不同界面的Table View就可以基于自身對(duì)象的實(shí)現(xiàn)做不同的展現(xiàn)。

定義protocol非常簡(jiǎn)單,如下:

Object-c代碼

  1. @protocol MyProtocol <NSObject>  
  2. // pst of methods and properties  
  3. [url=home.php?mod=space&uid=10695]@END[/url]  

除此之外,protocol定義時(shí),還支持2個(gè)關(guān)鍵字,@required和@optional。顧名思義:凡是在@required后面的方法,實(shí)現(xiàn)該protocol的類必須實(shí)現(xiàn),optional后面的方法可以不實(shí)現(xiàn)。默認(rèn)所有的方法和屬性都是@required的。

Object-c代碼

  1. @protocol MyProtocol <NSObject> 
  2. // pst of methods and properties 
  3. @required 
  4. // pst of methods and properties 
  5. @optional 
  6. // pst of methods and properties 
  7. @end 

另外,protocol還可以繼承另一個(gè)protocol。

Object-c代碼

  1. @protocol A 
  2. -(void)methodA; 
  3. @end 
  4. @protocol B <A> 
  5. -(void)methodB; 
  6. @end 

實(shí)現(xiàn)protocol也非常簡(jiǎn)單, 在Object-C中,一個(gè)類要使用某個(gè)protocol,只需要在類定義時(shí)加上‘<ProtocolName,...>’就行了。

Object-c代碼

  1. @interface MyClass : NSObject <MyProtocol, AnotherProtocol, YetAnotherProtocol> 
  2. ... 
  3. <A href="mailto:.@end">@end</A> 

最后,和Java中的接口一樣,一旦某個(gè)對(duì)象實(shí)現(xiàn)了某個(gè)protocol, 那么就可以用該protocol的指針來(lái)指向該對(duì)象。這就是為什么當(dāng)當(dāng)前對(duì)象實(shí)現(xiàn)了UITableViewDataSource protocol,就可以把Table View的delegate賦值給當(dāng)前對(duì)象。 在UITableView的代碼中,dataSource屬性的定義是這個(gè)樣子的。

  1. Object-c代碼 
  2. .... 
  3. id <UITableViewDataSource> _dataSource; 
  4. &helpp; 
責(zé)任編輯:閆佳明 來(lái)源: apkbus
相關(guān)推薦

2014-11-25 10:18:17

Objective-C

2014-08-05 13:09:34

Objective-C動(dòng)態(tài)特性

2013-05-02 10:51:17

iOS開(kāi)發(fā)Objective-C@property

2015-11-02 10:13:41

iOSObjective-C語(yǔ)法

2011-08-03 16:22:05

Objective-C CodeBlocks

2011-08-10 18:07:29

Objective-C反射

2011-08-04 13:55:10

Cocoa Objective- 文件

2011-08-22 09:34:50

Objective-C多態(tài)動(dòng)態(tài)類型

2011-07-29 15:47:21

iPhone開(kāi)發(fā) Objective- C

2013-06-20 10:40:32

Objective-C實(shí)現(xiàn)截圖

2013-03-27 12:54:00

iOS開(kāi)發(fā)Objective-C

2011-05-11 11:20:26

Objective-C

2011-05-11 15:58:34

Objective-C

2014-09-26 09:49:48

SwiftObjective-C

2011-07-28 15:11:23

iOS Objective-

2011-08-09 15:53:28

2014-12-12 14:57:11

Objective-C封裝

2011-05-11 13:54:08

Objective-C

2011-05-11 15:45:50

內(nèi)存管理Objective-C

2011-08-02 13:16:36

Objective-C 語(yǔ)法 函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 中文字幕在线一区 | 欧美亚洲视频在线观看 | 日韩欧美中文字幕在线观看 | 亚洲精品久久久一区二区三区 | 五月综合激情婷婷 | 一级毛片高清 | 日韩免费视频一区二区 | 日韩中文字幕在线播放 | 国产精品久久久久久久久婷婷 | 作爱视频免费观看 | 四虎影视免费观看 | 欧美福利三区 | 影音先锋男 | 国产人成精品一区二区三 | 午夜私人影院 | 精品一区av | 国产精品美女久久久 | 欧美成人精品在线 | 超碰精品在线 | 亚洲网视频 | 黄色片在线 | 成年人免费在线视频 | 黄色毛片在线观看 | 午夜视频在线免费观看 | 免费成人在线网站 | 黄a网 | 精彩视频一区二区三区 | 99reav| 中文字幕成人 | 国产成人综合在线 | 红桃成人在线 | 日韩欧美三区 | 欧美精品一二三区 | 91麻豆精品国产91久久久更新资源速度超快 | 久久国产精品精品国产色婷婷 | 日韩午夜电影在线观看 | 亚洲精品视频一区二区三区 | 亚洲午夜在线 | 久久99国产精一区二区三区 | 精品99爱视频在线观看 | 日韩久久精品视频 |