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

Objective-C 2.0中Category簡明教程

移動(dòng)開發(fā) iOS
Objective-C 2.0中Category簡明教程是本文要介紹的內(nèi)容,先來簡單認(rèn)識(shí)一下Category,Category為我們提供了區(qū)別于繼承的另外一種方法來對類進(jìn)行擴(kuò)展。

Objective-C 2.0Category簡明教程是本文要介紹的內(nèi)容,先來簡單認(rèn)識(shí)一下CategoryCategory為我們提供了區(qū)別于繼承的另外一種方法來對類進(jìn)行擴(kuò)展。我們可以向任何已有的類添加成員函數(shù)來實(shí)現(xiàn)功能上的擴(kuò)展(注:category只允許添加成員函數(shù),不能添加數(shù)據(jù)成員),添加的函數(shù)可以訪問類中所有的數(shù)據(jù)成員,該類的子類也將繼承新添加的成員函數(shù)。

假設(shè)我們需要擴(kuò)展前面幾節(jié)用到的book類,添加一個(gè)名為Abstract的成員函數(shù)來輸出書籍的摘要。使用category的格式為:

在頭文件中聲明category:

 @interface 需要擴(kuò)展的類(category名稱) //需要添加的函數(shù) @end

可以看到,聲明category的方法同類的聲明非常類似。回到我們的例子,如果我們需要向Book類添加Abstract成員函數(shù),對應(yīng)的聲明文件如下所示

  1. // // Book+Abstract.h     
  2. #import <Cocoa/Cocoa.h>   
  3. #import "Book.h"       
  4. @interface Book(Abstract)   
  5. -(NSString*) Abstract;   
  6. end  

注意推薦的文件命名規(guī)則:類名+category名.h

接下來我們需要對添加的abstract函數(shù)進(jìn)行定義,如下所示:

  1. // // Book+Abstract.m     
  2. #import "Book+Abstract.h"       
  3. @implementation Book(Abstract)   
  4. -(NSString*)Abstract{   
  5.    NSString* retstr = [[NSString alloc]initWithString:@"The story is..."];   
  6.    [retstr autorelease]; return retstr; }  
  7. @end  

implementation文件的命名規(guī)則與頭文件相似:類名+category名.m

作為演示,我們只是在Abstract函數(shù)中簡單的輸出一個(gè)NSString。下面我們來看客戶端如何調(diào)用:

  1.  #import <Foundation/Foundation.h>   
  2.  #import "Book.h"   
  3.  #import "Book+Abstract.h"     
  4.  int main (int argc, const char * argv[]) {   
  5.  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];     
  6.  NSString* name = [[NSString alloc] initWithString:@"Harry Porter"];   
  7.  NSNumber* number = [[NSNumber alloc] initWithInt:100];   
  8.  Book *book = [[Book alloc] initWithTitle:name andNumofpages:number];   
  9.  [number release]; [name release];      
  10.  NSLog(@"Abstract: %@", [book Abstract]);   
  11.  [book release];   [pool drain];   
  12.  return 0;  
  13. }  

為什么對類進(jìn)行擴(kuò)展的feature被稱作category?該名稱應(yīng)該反映了某種初衷,那就是當(dāng)某個(gè)類比較復(fù)雜龐大時(shí),我們可以對它的功能(也就是成員函數(shù))進(jìn)行分類,并且把它們放入不同的文件加以實(shí)現(xiàn)。

小結(jié):Objective-C 2.0Category簡明教程的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對你有所幫助!

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-08-17 10:00:12

Objective-CProperty

2012-06-15 09:47:48

Objective-CCategory

2011-07-08 13:49:46

Objective-C UUID

2013-12-03 13:05:30

Lua腳本語言

2011-08-01 11:37:41

iPhone Objective- 內(nèi)存

2009-08-06 17:45:08

C# Webservi

2011-08-17 15:37:23

Objective-C垃圾收集

2011-07-27 17:10:30

Objective-C 持久化

2011-08-05 14:03:39

Objective-C 對象 模板

2009-09-02 17:38:19

C#開發(fā)GIS

2014-06-20 10:51:35

Linux LVM邏輯卷

2011-08-22 09:48:16

WindowsObjective-C

2011-07-29 16:08:31

Objective-C 內(nèi)存

2011-08-16 10:23:04

Objective-CNSAutoreleaXcode常用鍵

2011-08-15 17:47:13

Objective-CisMemberOfC

2011-06-03 08:49:54

Java

2015-07-08 10:47:57

Using Swift CocoaObjective-C

2023-10-20 14:08:35

digDNS

2011-08-10 18:07:29

Objective-C反射

2013-06-20 10:40:32

Objective-C實(shí)現(xiàn)截圖
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 波多野结衣一区二区 | 人人射人人| 人人九九精| 国产乱码精品一区二区三区忘忧草 | 午夜在线免费观看视频 | 日韩精品在线播放 | 国产免费观看视频 | 欧美精品一区二区免费 | 亚洲精品乱码8久久久久久日本 | 欧美日韩免费 | 超碰av在线 | 国产一区二区三区四区hd | 国产视频福利一区 | 超碰伊人 | 色资源站 | 极品销魂美女一区二区 | 天天夜干 | 亚洲精品黄色 | 日韩视频91 | 欧美日本一区二区 | 亚洲一区在线观看视频 | 国产成人小视频 | 日韩激情免费 | 欧美日韩在线观看一区二区三区 | 国产高清精品一区二区三区 | 亚洲美女视频 | 欧美女优在线观看 | 精品一区二区三区91 | 狠狠干在线 | 永久看片| 精品毛片视频 | 成人国产免费视频 | h视频免费看 | 欧美日韩亚洲一区 | 中文一区二区视频 | 亚洲国内精品 | 亚洲欧洲视频 | 国产成人网 | 国产福利视频导航 | 国产福利在线 | 国产传媒视频在线观看 |