类别的三个作用
1.将类的实现分散到多个不同文件或不同框架中。
2.创建对私有方法的前向引用。
关于前向引用:如果其他类中的方法未实现,在你访问其他类的私有方法时,编译器会报错,这时使用类别,在类中声明这些方法(不必实现)就不会再产生警告,来我们是访问不了其他类的私有方法的,但是帮那个类的私有方法声明在这个类的类别中,就可以访问了,而且不需要在类别中实现,因为那个类里已有实现。
3.向对象添加非正式协议。
创建一个NSObject的类别并添加新方法,因为NSObject是顶级父类,在NSObject中添加了该方法,也就是说通过继承关系,所有的类中都有该方法。
正式协议是通过protocol指定的一些列方法的声明,然后由实现该协议的类自己去实现这些方法。而非正式协议是通过向NSObject中添加一个类别来实现,然后子类去继承NSObject。其实都差不多。
不过,非正式协议已经渐渐被正式协议取代,正式协议最大的优点就是可以使用泛型约束,而非正式协议则不可以。