类别的作用 :
在不修改原有的类的基础上增加新的方法
一个庞大的类可以分模块开发
一个庞大的类可以由多个人来编写,更有利于团队合作
类别的接口声明与类的定义十分相似,但类别不继承父类,只需要带有一个括号,表明该类别的 主要用途。
格式如下:
@interface 要补充的方法名(自己的方法名)
添加方法(注意不能添加变量)
@end
@implementation 要补充的方法名(自己的方法名)
添加方法实现
@end
快捷生成方法:
分类的注意事项:
1)在分类中不能声明实例变量,不能定义实例变量,也不能使用@property
2)在分类的方法中,可以访问类的实例变量
3)在分类中存在和类的同名方法,则覆盖
4)在多个类别中有同名方法时,执行的是最后编译的同名方法。
实例:
/*
统计一个字符串中阿拉伯数字的个数
NSString *str;
思路:
取出字符串的每一个字符
判断字符 是否是 0-9 之间 计数器+1.
*/
#import <Foundation/Foundation.h>
@interface NSString (countNum)
+(int)countNum:(NSString *)s;
@end
#import "NSString+countNum.h"
@implementation NSString (countNum)
+(int)countNum:(NSString *)s{
int count=0;
for (int i=0; i<s.length; i++) {
unichar ch = [s characterAtIndex:i];
if (ch>'0'&&ch<'9') {
count++;
}
}
return count;
}
@end
#import <Foundation/Foundation.h>
#import "NSString+countNum.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str =@"sad321";
int count = [NSString countNum:str];
NSLog(@"%@的长度为%d",str,count);
return 0;
}
}
|
|