黑马程序员--Object-C--04--Category

来源:互联网 发布:淘宝店策划案怎么写 编辑:程序博客网 时间:2024/06/05 07:40

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、分类

分类名称首字母大写

可以给某一个类扩充一些方法(不修改原来类的代码),可以对类的方法进行分类,显得条理清晰。

分类只能扩充方法,不能增加成员变量。
分类可以访问原类中的成员变量。
分类优先级最高,同名方法会覆盖原类中的方法,将会使得原类中的同名方法无法使用。
方法调用优先级:分类-原类-父类
分类中同名方法调用与编译顺序有关,最后编译的分类会覆盖之前的同名方法,因此会调用最后编译的分类的方法。
多数情况下是给系统自带类扩充自己需要而系统没有的方法

// 声明
@interface 类名(分类名称)

@end


// 实现
@implementation 类型(分类名称)


@end 

取得字符串中的指定位置字符。unichar c = [str characterAtIndex:位置数],位置数相当于数组下标。

二、分类的一些注意事项

1、尽管分类可以访问原始类的实例变量,但是它不能添加自身的任何变量。如果需要添加变量可以考虑创建子类。
2、分类可以重载该类中的另一个方法,但是通常认为这种做法不可取。因为,重载之后,再不能访问原来的方法。
3、可以拥有很多分类。 
4、和一般接口部分不同的是,不必实现分类中的所有方法。这对于程序扩展很有用,可以在该分类中声明所有方法,然后在一段时间之后才实现它。
5、通过使用分类添加新方法来扩展类不仅会影响这个类,同时也会影响它的所有子类。

三、category的使用场合

1、在定义类时的某些情况下(例如需求变更),你可能想要为其中的某个或几个类中添加新的方法;

2、一个类中包含了许多不同种类的方法需要实现,而这些方法需要不同团队的成员来实现;

3、在使用基础类库时,有可能希望这些类实现一些自己需要的方法,比如NSString。

0 0
原创粉丝点击