类别就是向类加入一些实用的功能或者方法 利于开发 类能够是系统类、能够是自己定义类

类别跟子类是不一样的。类别仅仅能加入一些方法 属性变量什么的不能够加入

不创建新类,就可以对已有类进行扩展

做项目的时候 跟其它程序猿会更好的合作

新建类别的图放在最后面

我们为系统类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;
}

以下把新建类别的图附上

首先,新建的适合选择以下这个文件

下一步,然后 在第一行 写你自定义的类别名称  第二行 是你要为哪个类加入类别

然后下一步 保存就可以,就能够看到新建出来了一个类似类的两个文件

Snail—OC学习之类别Category的更多相关文章

  1. OC学习笔记——类别(Category)

    类别,有些程序员又称之为分类. 类别是一种为现有的类添加新方法的方式,尤其是为系统的做扩展的时候,不用继承系统类,可以直接为类添加新的方法.也可以覆盖系统类的方法. 如: @interface NSO ...

  2. OC学习7——类别、扩展和协议

    1.我么在调用NSLog()方法打印一个对象时,实际上是调用了该对象的description方法,这个description方法就和Java中的toString()方法一样.所以,下面两行代码其实是一 ...

  3. iOS学习笔记之Category

    iOS学习笔记之Category 写在前面 Category是类别(也称为类目或范畴),使用Category,程序员可以为任何已有的类添加方法.使用类别可以对框架提供的类(无法获取源码,不能直接修改) ...

  4. IOS开发-OC学习-常用功能代码片段整理

    IOS开发-OC学习-常用功能代码片段整理 IOS开发中会频繁用到一些代码段,用来实现一些固定的功能.比如在文本框中输入完后要让键盘收回,这个需要用一个简单的让文本框失去第一响应者的身份来完成.或者是 ...

  5. iOS学习笔记06—Category和Extension

    iOS学习笔记06—Category和Extension 一.概述 类别是一种为现有的类添加新方法的方式. 利用Objective-C的动态运行时分配机制,Category提供了一种比继承(inher ...

  6. 分类(类别/Category)与 类扩展(Extension)

    一.分类(类别/Category) 1.适用范围      当你已经封装好了一个类(也可能是系统类.第三方库),不想在改动这个类了,可是随着程序功能的增加需要在类中增加一个方法,这时我们不必修改主类, ...

  7. 类别(Category)与扩展(Extensions)

    一.类别(Category) 类别(Category)是一种可以为现有的类(包括类簇:NSString...,甚至源码无法获得的类)添加新方法的方式无需从现有的类继承子类.类别添加的新方法可以被子类继 ...

  8. iOS类别(Category)

    iOS类别(Category)与扩展(Extension) 苹果的官方文档 Category在iOS开发中使用非常频繁.尤其是在为系统类进行拓展的时候,我们可以不用继承系统类,直接给系统类添加方法,最 ...

  9. OC学习总结之面向对象和类

    OC学习总结之面向对象和类   Objective-c是c语言的母集合,它的原意就是在原始的c语言的主体上加入面向对象的特性.1.面向对象和面向过程  面向对象和面向过程是编程的两种思考方式.面向对象 ...

随机推荐

  1. 防止excel数字变成科学计数法

    在网上查了很多资料知道解决办法大概有两个:一是在身份证字段前加个英文单引号,二是设置Excel的格式为文本格式. 我试用过第一种确实可以显示,但是有个“'”号在那里感觉确实不是很好,虽然听说不影响,但 ...

  2. fatal error C1853: '<filename>' is not a precompiled header file

    当编译c和c++混合的项目时,会出现如下类似的错误 fatal error C1853: '<filename>' is not a precompiled header file 解决方 ...

  3. XXX全球 IP 地址库

    XXX全球 IP 地址库 Bulgaria 93.123.23.1 93.123.23.2 93.123.23.3 93.123.23.4 93.123.23.5 93.123.23.6 93.123 ...

  4. [Big Data] Week4B (Basic)

    Question 1 Note: In this question, all columns will be written in their transposed form, as rows, to ...

  5. ThinkPHP3.2 新bug ReadHtmlCache 支持不区分大写和小写的函数

    报错提示: Fatal error: Function name must be a string in D:\wwwroot\zbphp.com\ThinkPHP\Library\Behavior\ ...

  6. ZH奶酪:PHP解析URL及parse_url、parse_str、explode、implode函数说明

    首先看一下解析任意URL的代码: (1)获取协议类型:例如参考链接中的:http (2)获取主机地址:例如参考链接中的:my.oschina.net (3)获取当前页面在服务器的路径:例如参考链接中的 ...

  7. UISlider设置按钮透明

    UISlider *aslider = [[UISlider alloc]initWithFrame:kCR(, , , )]; [aslider setValue:0.5]; [aslider se ...

  8. IO习题

    1.Java实现将九九乘法表输入到文本文件 public class Test1 { public static void main(String[] args) throws FileNotFoun ...

  9. MVC MVP MVVM 图解

    1.MVC (1)图解 解释: 视图(View):用户界面. 控制器(Controller):业务逻辑 模型(Model):数据保存 各部分之间的通信方式如下: View 传送指令到 Controll ...

  10. EXCEPTION-TOMCAT

      CreateTime--2016年10月24日16:22:12Author:Marydon声明:异常类文章主要是记录了我遇到的异常信息及解决方案,解决方案大部分都是百度解决的,(这里只是针对我遇到 ...