程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 9、Category

9、Category

編輯:關於C

Category 書上翻譯為目錄 [系統類的擴展]

(1)實現繼承之外的擴展方法機制

(2)Category使用方法

(3)字符串翻轉方法Category擴展

(4)讓函數私有化


(1)實現繼承之外的擴展方法機制

在一個類裡面拓展一些方法進去

1、能把一個類的實現分為若干不同文件中。

<1> c/c++無法實現的,把類實現分到若干文件中實現。

<2> 或者現有的類中拓展一些方法進去。

以前是用繼承方法在裡面實現一些方法,現在只要在字符串類中拓展一些方法就好。[用系統類中動態的添加一些方法]

<3> 公司經常問Category 與 繼承有什麼區別呢?

Category 不能完全替代繼承,但是它能夠做很多繼承做不了的事情,寫起來比繼承麻煩,但使用起來比較好用。


2、每個Category 是類的一部分

3、類的不同類別可以單獨編譯(可以讓不同開發者負責一個Category )

4、如果把一個類Category (申明和實現)放到一個.m文件中,那麼該Category 外界不能訪問。這樣實現類似c++中的 class的private功能。

5、Category 實際上就是對類的擴展。


Category 的缺點:

只能擴展函數,消息,不能擴展字符段,變量等[所以說不能替代繼承]

Category 命名規范:

一般:

要擴展的類名+擴展變量.[h/m]

比如:

NSString + ReverseString.h

NSString + ReverseString.m

\

\

unichar == unsigned short 兩個字節。

"%C" 這個C是大c,和語音中的c不一樣。

appendString 添加到字符串裡。

\



實現.m函數私有化[只給.m函數提供調用]

@interface Foo (Private)//這樣聲明

-(void) test2;

@end

@implementation Foo

-(void) test

{

[self test2];

}

-(void) test2

{

NSLog(@"test2 is calling");

}

@end


(2)Category使用方法

(3)字符串翻轉方法Category擴展




  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved