類別(Category)的基本概念
封裝是面向對象的一個特征,OC也不例外,但是有的時候我們會碰到這樣的一種情況,不如我封裝了一個類,
不想再動它了,可是隨著程序功能的增加,需要在那個類中增加一個小小的方法,這是我們就不必再那個類中
做修改或者在定義一個子類,只需要在用到的地方隨手添加一個該類的類別(Category)即可。
(1)在類別中定義的方法,會成為原始類的一部分,與其他方法的調用沒有區別。
(2)通過給父類定義類別方法,其子類也會繼承這些方法。如果子類添加類別方法,父類則不會用手子類的類別方法。
類別方法的應用
在運行時跟其他的方法沒有區別。
類別方法的局限性
現有類中的方法
類別的命名和用法
類別的命名規則:類名+擴展方法,如:NNString+Add;
類別的接口聲明與類的定義十分相似,但是類別不繼承父類,只需要帶有一個括號,表明該類的主要用途
聲明文件:
#import@interface NSArray (Convert) +(NSMutableArray *)arrayFormNumber:(int)number; @end
實現文件:
#import "NSArray+Convert.h" @implementation NSArray (Convert) +(NSMutableArray *)arrayFormNumber:(int)number{ NSMutableArray *numberArray=[[NSMutableArray alloc]init]; while (number) { int last=number%10; //取出最後一位; number=number/10; [numberArray addObject:[NSNumber numberWithInt:last]]; } return [numberArray autorelease]; } @end