分类的声明和实现
在不修改源代码的前提下,各类增加新的功能
声明
@interface 待扩展的类名 (分类的名称)
@end
分类文件的命名规则
Person+base
@interface Person(base)
@end
实现分类
@implementation 待扩展的类(分类的名称)
@end
文件类型选择 Category
Class 输入类名
分类的注意事项
1.分类只能增加方法,不能增加成员变量,@property
2.分类可以访问原来类中的成员变量
3.如果分类和原来类出现同名的方法,优先调用分类中的方法,原来类中的方法会被忽略
4.当在多个分类中有同名的方法的时候,这时候执行最后编译的方法。
分类非正式协议
非正式协议
非正式协议通常定义为NSObject类的类别
所谓非正式协议就是类别
即凡是NSObject 或其子类Foundation框架中类增加的类别都是非正式协议。
[str characterAtIndex:i]取字符
类的延展
延展类别又称为延展(Extendsion)
Extendsion是Category的一个特例
其名为匿名(空名)就是括号内为空
@interface MyClass()
@end
这种写法叫匿名类别,添加额外的原来没有的变量和属性
延展不能使用@implementation 类名()实现类别的方法
延展的实现
通过延展来实现方法的私有,延展的头文件独立。这种方法不能实现真正的方法私有,当在别的文件中引入延展的头文件,那么在这个文件中定义的类的对象就可以直接调用在延展中定义所谓私有的方法
延展的文件类型设置为extension
文件名Person_work.h只有声明文件
作用可以定义私有变量和方法
|
|