类的子类体现的是纵向的类层次关系。
类别体现的是平级的关系,是同一层次上的关系。
Objective-C把类别集成到Objective-C运行时里面,所以在Objective-C中为已有类添加新的方法并不需要重新编译旧的类。
类别可以访问类的所有方法和实例变量,哪怕是私有变量。
如果类别中的方法名与原类中的某个方法名同名,则原类的方法会被覆盖,可以利用这一点来修复bug。
由于类别是运行时级别的集成,所以程序的安全性就下降了。
如果两个类别具有相同的方法名,那么具体调用哪个就不知道了。
Objective-C只能添加方法不能添加实例变量。
与类别不同,类扩展是类的内部扩展。
类别关心的是把不同功能的代码分开存放。
因为类别是运行时机制,所以你调用一个类别中的方法,就会占用一点内存的空间,所以少用类别可以减少内存消耗。