---------------------------ASP.Net+Unity开发、.Net培训、期待与您交流!---------------------------
Category
分类:可以给某一个类扩充一些方法(不修改原来类的代码)
//声明
@interface 类名(分类名称)
@end
//实现
@implementation 类名(分类名称)
@end
分类的作用:在不改变原来类内容的基础上,可以为类新增一些方法。
使用注意:
1.分类只能增加方法,不能增加成员变量
2.分类方法实现中可以访问原来类中声明的成员变量
3.分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,这样会导致原来的方法没法再使用
4.方法调用的优先级:分类(最后参与编译的分类优先) --> 原来的类 --> 父类
例给系统自带的NSString类增加一个方法:计算某个字符串中阿拉伯数字的个数
声明 (NSString+Number.h头文件中):
@interface NSString (Number)
//通过类方法
+ (int)numberCountOfString:(NSString *)str;
//通过对象方法
- (int)numberCount;
@end
实现(NSString+Number.m实现文件中):
@implementation NSString (Number)
//类方法的实现
+ (int)numberCountOfString:(NSString *)str
{
/*
//定义变量计算数字个数
int count = 0;
//遍历整个字符串
for(int i = 0; i < str.length; i++)
{
//根据索引获取字符
unichar c = [str characterAtIndex:i]
//判断字符是否在 '0' 到 '9'
if(c >= '0' && c <= '9')
{
count++;
}
}
return count;
*/
//由于两个方法很相似,所以可以直接调用对象方法来实现
return [str numberCount];
}
- (int)numberCount
{
//定义变量计算数字个数
int count = 0;
for(int i = 0; i < self.length; i++)
{
//根据索引获取字符
unichar c = [str characterAtIndex:i]
//判断字符是否在 '0' 到 '9'
if(c >= '0' && c <= '9')
{
count++;
}
}
return count;
}
@end
使用的时候需要添加"NSString+Number.h"的头文件。
类方法可以直接通过[NSString numberCountOfString:@"abc123"];来调用方法。对象方法可以通过[@"abc123" numberCount];来调用。
-----------------------------ASP.Net+Unity开发、.Net培训、期待与您交流!---------------------------
详细请查看:www.itheima.com