黑马程序员——OC学习之分类category的使用

本文介绍了如何在Objective-C中使用Category为NSString类添加计算数字字符个数的方法,通过创建分类文件,实现了在不修改原有类代码的基础上扩展类功能。分类包括.h和.m文件,主要细节包括:无需指定继承、能添加方法但不能添加成员变量,且分类方法会覆盖同名的原有方法。
摘要由CSDN通过智能技术生成

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


category作为oc中的一种语法,可以为某个具体的类添加额外的方法,并且不用改变原本类的代码,非常方便,但是不可以为类添加成员变量。

以为NSString类添加一个计算字符串中数字字符个数的功能为例,在xcode6.1中为某个类添加分类方法步骤如下:

1.新建分类文件,选择Objective-C File:


2.File填写分类名称,File Type选择Category,Class选择需要添加分类的类。


3.新生成2个文件,NSString+NUMBER.h 和 NSString+NUMBER.m

———-NSString+NUMBER.h文件内容

#import <Foundation/Foundation.h>
@interface NSString (NUMBER)
//输出给定字符串中数字字符的个数
//添加一个类方法
+ (NSUInteger)countOfNumberInString:(NSString*) string;
//添加一个对象方法
- (NSUInteger)countOfNumberInString;
@end

———-NSString+NUMBER.m

#import "NSString+NUMBER.h"
@implementation NSString (NUMBER)
//现实.h文件中添加的方法,计算字符串中数字字符的个数
+ (NSUInteger)countOfNumberInString:(NSString *)string{
    NSUInteger count = 0;
    NSUInteger length = [string length];
    for (int i = 0; i < length; i++) {
        char c = [string characterAtIndex:i];
        if (c >= '0' && c <= '9') {
            count++;
        }
    }
    return count;
}
- (NSUInteger)countOfNumberInString{
    return [NSString countOfNumberInString:self];
}
@end

———main.m文件中

#import <Foundation/Foundation.h>
#import "NSString+NUMBER.h"     //引入分类的头文件
int main() {
    NSString *str1 = @"abc123qwe456xyz7890";
    NSString *str2 = @"abcqweyzx7890";
        //调用NSString中分类的方法,计算数字字符的个数
    NSUInteger count1 = [NSString countOfNumberInString:str1];
    NSUInteger count2 = [str2 countOfNumberInString];
    NSLog(@"%ld,%ld",count1,count2);
    return 0;
}

输出结果:

2014-12-18 11:35:10.236 ocblog6[551:23164] 10,4

 

从以上例子中可以看出分类的用法很简单,很实用,总结一下分类的细节:

1.分类分为2个文件,一个.h文件,一个.m文件,分别写声明和实现,为类添加分类的写法就是 @interface NSString (NUMBER) 和@implementation NSString (NUMBER) 不需要写继承自谁,main函数的文件中必须要引入分类的头文件才能使用分类添加的方法。

2.分类可以为一个类添加额外的方法而不需要改变原本类的代码,也不需要去继承类才能添加新的方法。

3.分类可以为类添加新的类方法,对象方法,但是却不能添加成员变量。

4.分类如果添加的方法名和类中原本的方法名相同,那么调用类的方法时会先调用分类的同名方法,也就是说分类的同名方法会覆盖本类的同名方法。










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值