黑马程序员技术交流社区

标题: 分类(Category)概念及使用流程 [打印本页]

作者: Storm_    时间: 2015-11-8 21:12
标题: 分类(Category)概念及使用流程
类别的作用 :

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


类别的接口声明与类的定义十分相似,但类别不继承父类,只需要带有一个括号,表明该类别的 主要用途。

格式如下:


@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;
    }
}

作者: wwf707542865    时间: 2015-11-8 21:19
@interface  要补充的方法名(自己的方法名)
添加方法(注意不能添加变量)
@end

@implementation  要补充的方法名(自己的方法名)
添加方法实现
@end

请改一下,很难理解啊,应该是要增加方法的类的名称




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2