类别(category)

虽然做了半年多的ios,虽说做东西是可以做出来,但是真让我说理论上的东西,经常说不上来,我知道有那个东西,但是不值得怎么说,看来得好好总结总结。

如果有理解有误的地方,欢迎大家指正。

 

言归正传,来说说什么事category(类别),它的用途,优缺点等。

 

category,类别,是一种为现有的类添加新方法的方式。即使我们不知道该类的源代码,但是通过使用category,为该类添加了新方法,并可以使用该类的成员变量;只要实现了类别的方法,在任何使用类的地方,类的对象都可以使用该方法。

类别也可以重写原始类的方法。但是与继承不同的是,因为类别的优先级高,只要你使用类别重写了原是类的方法,你就再也无法访问原始类中的该方法。而继承是可以任意访问子类重写的方法和父类的方法的。

类别不能添加新的实例变量,这也是类别的局限性;(其实类别也可以添加实例变量,但是很麻烦,比如这篇文章http://blog.csdn.net/linkai5696/article/details/6644400)

而继承的子类是可以随便添加新的实例变量的;继承了实现了类别的类时,子类也会完全继承类别中的方法。

 

类别的作用:

  1.将类的实现分先到多个不同的文件或者不同框架中。

  2.创建对私有方法的前向应用。

  3. 向对象添加非正式协议。

 

类别的声明如下:

//向NSString类添加类别NumberConvenience,添加的类别方法为lengthAsNumber

@interface NSString (NumberConvenience) 

- (NSString *) lengthAsNumber;

@end;

 

posted @ 2012-05-23 21:44  小令狐  阅读(552)  评论(0编辑  收藏  举报