自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

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

定義protocol非常簡單,如下:

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也非常簡單, 在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的指針來指向該對(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é)任編輯:閆佳明 來源: 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開發(fā)Objective-C@property

2015-11-02 10:13:41

iOSObjective-C語法

2011-08-03 16:22:05

Objective-C CodeBlocks

2011-08-10 18:07:29

Objective-C反射

2011-07-29 15:47:21

iPhone開發(fā) Objective- C

2011-08-22 09:34:50

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

2011-08-04 13:55:10

Cocoa Objective- 文件

2014-09-26 09:49:48

SwiftObjective-C

2011-07-28 15:11:23

iOS Objective-

2013-03-27 12:54:00

iOS開發(fā)Objective-C

2011-05-11 11:20:26

Objective-C

2011-05-11 15:58:34

Objective-C

2013-06-20 10:40:32

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

2011-08-09 15:53:28

2014-12-12 14:57:11

Objective-C封裝

2011-08-04 14:58:37

Objective-C Cocoa NSString

2011-08-02 13:16:36

Objective-C 語法 函數(shù)

2011-05-11 13:54:08

Objective-C
點(diǎn)贊
收藏

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