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擴展