Objective-c中的分類

來源:互聯網
上載者:User

使用Object-C中的分類,是一種編譯時間的手段,允許我們通過給一個類添加方法來擴充它(但是通過category不能添加新的執行個體變數),並且我們不需要訪問類中的代碼就可以做到,這點和javascript中使用原型來定義屬性有點類似。

我們可以為一個類建立一個新的方法,而不需要在代碼中編輯類定義。

下面就是定義並使用分類的例子程式,通過下面代碼,我們可以給Object-C中的NSString 添加camelCaseString分類,使用camelCaseString方法,就可以去掉一個字串中的空格,並將原有空格後的單詞改寫成大寫(即將字串轉化為駝峰式)。

#import <Foundation/Foundation.h>              /*    定義分類的過程大致可分為以下幾個步驟:        第一步、建立一個帶有介面的新檔案,即建立已有類                 第二步、在新檔案中添加需要擴充的方法及方法的實現,即需要添加的分類     */ //NSString 表示將要添加分類的類名稱,該類必須是已存在的。     //CamelCase 是為類添加的方法名稱。     //只能添加方法,不能添加變數。     //標頭檔命名慣例:ClassName+CategoryName.h     @interface NSString (CamelCase)              -(NSString*) camelCaseString;     @end     @implementation NSString (CamelCase)     -(NSString*) camelCaseString     {         //調用NSString的內部方法擷取駝峰字串。         //self指向被添加分類的類。         NSString *castr = [self capitalizedString];                      //建立數組來過濾掉空格, 通過分隔字元對字元進行組合。         NSArray *array = [castr componentsSeparatedByCharactersInSet:                           [NSCharacterSet whitespaceCharacterSet]];         //把數組的字元輸出         NSString *output = @"";         for(NSString *word in array)         {             output = [output stringByAppendingString:word];         }                      return output;                  }              @end     int main (int argc, const char * argv[])     {                      NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];                      NSString *str = @"My name is bill.";         NSLog(@"%@", str);         str = [str camelCaseString];         NSLog(@"%@", str);                      [pool drain];         return 0;     }

本文出自 “驛落黃昏” 部落格,請務必保留此出處http://yiluohuanghun.blog.51cto.com/3407300/1153613

聯繫我們

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