? 类别是一个类,它是添加了新功能的现有类。
 ? 使用类别就是为了能够为现有类添加新的方法,不用继承该现有类,就可使用现有类的对象调用添加的方法了。
 ? 类别可以使类的实现分散在多个文件中
 ? 类别中不能有变量,类别中没有放变量的位置
 ? 如果类中的方法和类别中的方法名称相同,这将造成冲突,类别的方法将完全取代类的方法。
 ? 同一个类的不同类别声明了相同的方法,这将导致不稳定,哪个方法会被调用是不确定的
类别声明: 
 #import "ClassName.h" 
 @interface ClassName ( CategoryName ) 
 方法声明
 @end
类别实现:
 #import "ClassName+CategoryName.h” //声明文件 
 @implementation ClassName ( CategoryName ) 
 方法实现
 @end
实例:
FractionMath.h
 #import "Fraction.h"
 @interface Fraction (Math)
 -(Fraction*) add: (Fraction*) f;
 -(Fraction*) mul: (Fraction*) f;
 -(Fraction*) div: (Fraction*) f;
 -(Fraction*) sub: (Fraction*) f;
 @end
 FractionMath.m
 #import "FractionMath.h"
 @implementation Fraction (Math)
 -(Fraction*) add: (Fraction*) f {
  
 return [[Fraction alloc] initWithNumerator: numerator * [f denominator] +denominator *
                [f numerator] denominator: denominator * [f denominator]];
 }
 -(Fraction*) mul: (Fraction*) f {
  
 return [[Fraction alloc] initWithNumerator: numerator * [f numerator]
              denominator: denominator * [f denominator]];
 }
 -(Fraction*) div: (Fraction*) f {
  
 return [[Fraction alloc] initWithNumerator: numerator * [f denominator] 
           denominator: denominator * [f numerator]];
 }
 -(Fraction*) sub: (Fraction*) f {
  
 return [[Fraction alloc] initWithNumerator: numerator * [f denominator] -denominator * [f numerator]
                 denominator: denominator * [f denominator]];
 }
 @end
 main.m
 #import <stdio.h>
 #import "Fraction.h"
 #import "FractionMath.h"
 int main( int argc, const char *argv[] ) {
  
 // create a new instance
 Fraction *frac1 = [[Fraction alloc] initWithNumerator: 1 denominator: 3];
 Fraction *frac2 = [[Fraction alloc] initWithNumerator: 2 denominator: 5];
 Fraction *frac3 = [frac1 mul: frac2];
[frac1 print];
 printf( " * " );
 [frac2 print];
 printf( " = " );
 [frac3 print];
 printf( "/n" );
 // free memory
 [frac1 release];
 [frac2 release];
 [frac3 release];
 return 0;
 }
 output
  
1/3 * 2/5 = 2/15