1.category(分类)的作用
1)给类新添方法,不改变原有方法
2)把庞大的类分为若干模块开发
3)方便多人编写
2.category使用的目的
1)对现有类进行拓展
2)作为子类的替代手段
3)对类中方法归类
3.category使用分类的步骤
1)声明分类
2)实现分类
3)使用分类
4.category使用注意
1)分类只能增加方法,不能增加成员变量
2)分类中可以调用原类中的成员变量
3)分类中可以创建类中的同名方法,优先使用分类中的方法,在多个分类中有同名方法的时候,执行最后编译的那个类别中的同名好方法
5.分类的非正式协议
1)非正式协议
凡是NSObject类和其子类都是非正式协议
2)非正式协议的应用:获得一个字符串中阿拉伯数字个数
- NSString.h
- //为NSString 类增加新的方法
- #import <Foundation/Foundation.h>
- @interface NSString(countNum)
- -(int)countNum;
- @end
- NSString.m
- #import "NSString.h"
- @implementation NSString(countNum)
- int count;
- -(int)countNum{
- for (int i=0; i<[self length]; i++) {
- if ([self characterAtIndex:i]<'9'&&[self characterAtIndex:i]>'0') {
- count++;
- }
- }
- return count;
- }
- @end
- main.m
- #import <Foundation/Foundation.h>
- #import "NSString.h"
- int main(){
- NSString *str=@"h128yh91fh1";
- NSLog(@"有%d个阿拉伯数字",[str countNum]);
- return 0;
- }
复制代码
6.category延展
- Person_extern.h
- #import "Person.h"
- //分类名为空
- @interface Person ()
- //可以为类添加新属性
- @property (nonatomic,assign) float weight;
- -(void)run;
- @end
复制代码
延展注意
1)延展添加的方法一定要在.m文件中实现
2)延展添加的方法和属性是相对私有的 |
|