类别就是向类添加一些有用的功能或者方法 利于开发 类可以是系统类、可以是自定义类
类别跟子类是不一样的,类别只能添加一些方法 属性变量什么的不可以添加
不创建新类,即可对已有类进行扩展
做项目的时候 跟其他程序员会更好的合作
新建类别的图放在最后面
我们为系统类NSArray添加一个打印方法 使得能输出中文
界面如下

然后再NSArray+MyNSLog.h中声明一个函数
#import <Foundation/Foundation.h>
@interface NSArray (MyNSLog)
- (NSString *)printChinese;
@end
然后再NSArray+MyNSLog.m中实现
#import "NSArray+MyNSLog.h"
@implementation NSArray (MyNSLog)
- (NSString *)printChinese{
NSMutableString * string = [[NSMutableString alloc] init];
[string appendString:@"{\n"];
//我们是位系统类NSArray添加一个能打印出中文的功能 即下面的self是指的我们要输出的数组
//即就是要输出中文的数组
for (int i = 0; i < self.count; i++) {
//字符串可以输出中文
[string appendFormat:@"\t%@,\n",self[i]];
}
[string appendFormat:@"}"];
return string;
}
@end
在main.m中只需引入类别的头文件即可 如果是自定义的类 也是只需把类别的头文件进入即可
#import <Foundation/Foundation.h>
#import "NSArray+MyNSLog.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSArray * array = @[@"我是",@"蜗牛",@"Snail"];
//系统的输出结果 中文已乱码
/*
(
"\U6211\U662f",
"\U8717\U725b",
Snail
)
*/
NSLog(@"%@",array);
//当我们用添加的那个功能输出时 中文可以输出来
/*
{
我是,
蜗牛,
Snail,
}
*/
NSLog(@"%@",[array printChinese]);
}
return 0;
}
下面把新建类别的图附上
首先,新建的适合选择下面这个文件
下一步,然后 在第一行 写你自己定义的类别名称 第二行 是你要为哪个类添加类别
然后下一步 保存即可,就可以看到新建出来了一个类似类的两个文件