A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Storm_ 中级黑马   /  2015-11-8 21:12  /  1030 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

类别的作用 :

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


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

格式如下:


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

1 个回复

倒序浏览
@interface  要补充的方法名(自己的方法名)
添加方法(注意不能添加变量)
@end

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

请改一下,很难理解啊,应该是要增加方法的类的名称
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马