歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Objective-C中的分類

Objective-C中的分類

日期:2017/3/1 10:00:21   编辑:Linux編程

使用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, constchar * argv[])
  • {
  • NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
  • NSString *str = @"My name is bill.";
  • NSLog(@"%@", str);
  • str = [str camelCaseString];
  • NSLog(@"%@", str);
  • [pool drain];
  • return 0;
  • }
Copyright © Linux教程網 All Rights Reserved