类别就是向类加入一些实用的功能或者方法 利于开发 类能够是系统类、能够是自己定义类
类别跟子类是不一样的。类别仅仅能加入一些方法 属性变量什么的不能够加入
不创建新类,就可以对已有类进行扩展
做项目的时候 跟其它程序猿会更好的合作
新建类别的图放在最后面
我们为系统类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:@"{ "]; //我们是位系统类NSArray加入一个能打印出中文的功能 即以下的self是指的我们要输出的数组 //即就是要输出中文的数组 for (int i = 0; i < self.count; i++) { //字符串能够输出中文 [string appendFormat:@" %@, ",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"]; //系统的输出结果 中文已乱码 /* ( "U6211U662f", "U8717U725b", Snail ) */ NSLog(@"%@",array); //当我们用加入的那个功能输出时 中文能够输出来 /* { 我是, 蜗牛, Snail, } */ NSLog(@"%@",[array printChinese]); } return 0; }
以下把新建类别的图附上
首先,新建的适合选择以下这个文件
下一步,然后 在第一行 写你自定义的类别名称 第二行 是你要为哪个类加入类别
然后下一步 保存就可以,就能够看到新建出来了一个类似类的两个文件