优点:
不需要通过增加子类而增加现有类的行为(方法),且类目中的方法与原始类方法基本没有区别;
通过类目可以将庞大一个类的方法进行划分,从而便于代码的日后的维护、更新以及提高代码的阅读性;
缺点:
无法向类目添加实例变量,如果需要添加实例变量,只能通过定义子类的方式;
类目中的方法与原始类以及父类方法相比具有更高优先级,如果覆盖父类的方法,可能导致super消息的断裂。因此,最好不要覆盖原始类中的方法。
类别的作用
给系统原有类添加方法,不能扩展属性。
如果类别中方法的名字跟系统的方法名一样,在调用的时候类别中的方法优先级更高;
分散类的实现:如:
+ (NSIndexPath *)indexPathForRow:(NSInteger)row inSection:(NSInteger)section
原本属于NSIndexPath的方法,
但因为这个方法经常使用的表的时候调用、跟表的关系特别密切,因此把这个方法一类别的形式、声明在UITableView.h中。
声明私有方法,某一个方法只实现,不声明,相当于私有方法。
类别不能声明变量,类别不可以直接添加属性。
property描述setter方法,就不会报错。
网友评论