Objective-C--分类的使用

1、分类概念
Category有很多种翻译: 分类\类别 \ 类目 (一般叫分类)
Category是OC特有的语法, 其他语言没有的语法(类似于C#语言中的”扩展方法”和”partial”关键字)


2、类别的作用
在不修改原有的类的基础上增加新的方法
一个庞大的类可以分模块开发
一个庞大的类可以由多个人来编写,更有利于团队合作


3、使用分类的目的
1)对现有类进行扩展;
2)作为子类的替代手段;
3)对类中的方法归类。


4、声明和实现

//声明

@interface 类名(分类名)
@end

//实现

@implementation 类名(分类名)
@end

注意事项
1)分类只能增加方法,不能增加属性
2)分类方法实现中,可以访问原来类中的成员
3)分类可以重新实现原来类中的方法,但会覆盖掉原来的方法,会导致原来方法无法使用
4)方法调用优先级:分类(最后编译的先执行)——>原来的类——>父类
5、分类的应用

给系统自带的类扩充方法
1)给NSString 增加一个类方法,计算字符串中数字的个数
2)给NSString 增加一个对象方法,计算字符串中数字的个数

//.h文件中

#import <Foundation/Foundation.h>
@interface NSString(Number)
//类方法
+(int)numberOfCountToString(NSString *)str;
//对象方法
-(int)numberCount;
@end

//.m文件中

#import "NSString+Number.h"
@implementation NSString(Number)

//类方法
+(int)numberOfCountToString(NSString *)str
{
//设定计数器,初值为0
int count = 0;
//for循环
for(int i = 0;i < str.length;++i){
//依次取出
unichar c =[str characterAtIndex:i];
if(c>='0'&& c<='9')
{
//计数器+1
count++;
  }
}
return count;

//上面的写法可以 这里更简单的方法,调用对象方法

return [str numberCount];

//对象方法

-(int)numberCount
{
//设定计数器
 int count = 0;
 //for循环依次取出
 for(int i = 0;i < self.length;++i){
  unichar c =[self characterAtIndex:i];
  if(c>='0'&& c<='9')
  {
   count++;
  }
 }
 //返回计数器的值
 return count;
}
@end
#import <Foundation/Foundation.h>
#import "NSString+Number.h"
int main()
{
autoreleasepool{
//接收数据
 int count1 = [NSString  numberOfCountToString;@"sf35sdg34"];
 //打印结果
 NSLog(@"%d",count1);
 //输出结果为4
 int count2 = [@"sa3454fd345ds" numberCount];
 NSLog(@"%d",count2);//输出结果为2
}
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值