Snail—OC学习之类别Category
类别就是向类加入一些实用的功能或者方法 利于开发 类能够是系统类、能够是自己定义类
类别跟子类是不一样的。类别仅仅能加入一些方法 属性变量什么的不能够加入
不创建新类,就可以对已有类进行扩展
做项目的时候 跟其它程序猿会更好的合作
新建类别的图放在最后面
我们为系统类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的更多相关文章
- OC学习笔记——类别(Category)
类别,有些程序员又称之为分类. 类别是一种为现有的类添加新方法的方式,尤其是为系统的做扩展的时候,不用继承系统类,可以直接为类添加新的方法.也可以覆盖系统类的方法. 如: @interface NSO ...
- OC学习7——类别、扩展和协议
1.我么在调用NSLog()方法打印一个对象时,实际上是调用了该对象的description方法,这个description方法就和Java中的toString()方法一样.所以,下面两行代码其实是一 ...
- iOS学习笔记之Category
iOS学习笔记之Category 写在前面 Category是类别(也称为类目或范畴),使用Category,程序员可以为任何已有的类添加方法.使用类别可以对框架提供的类(无法获取源码,不能直接修改) ...
- IOS开发-OC学习-常用功能代码片段整理
IOS开发-OC学习-常用功能代码片段整理 IOS开发中会频繁用到一些代码段,用来实现一些固定的功能.比如在文本框中输入完后要让键盘收回,这个需要用一个简单的让文本框失去第一响应者的身份来完成.或者是 ...
- iOS学习笔记06—Category和Extension
iOS学习笔记06—Category和Extension 一.概述 类别是一种为现有的类添加新方法的方式. 利用Objective-C的动态运行时分配机制,Category提供了一种比继承(inher ...
- 分类(类别/Category)与 类扩展(Extension)
一.分类(类别/Category) 1.适用范围 当你已经封装好了一个类(也可能是系统类.第三方库),不想在改动这个类了,可是随着程序功能的增加需要在类中增加一个方法,这时我们不必修改主类, ...
- 类别(Category)与扩展(Extensions)
一.类别(Category) 类别(Category)是一种可以为现有的类(包括类簇:NSString...,甚至源码无法获得的类)添加新方法的方式无需从现有的类继承子类.类别添加的新方法可以被子类继 ...
- iOS类别(Category)
iOS类别(Category)与扩展(Extension) 苹果的官方文档 Category在iOS开发中使用非常频繁.尤其是在为系统类进行拓展的时候,我们可以不用继承系统类,直接给系统类添加方法,最 ...
- OC学习总结之面向对象和类
OC学习总结之面向对象和类 Objective-c是c语言的母集合,它的原意就是在原始的c语言的主体上加入面向对象的特性.1.面向对象和面向过程 面向对象和面向过程是编程的两种思考方式.面向对象 ...
随机推荐
- SQL Server 视图索引
在视图上创建索引的另一个好处是:查询优化器开始在查询中使用视图索引,而不是直接在 FROM 子句中命令视图.这样一来,可从索引视图检索数据而无需重新编码,由此带来的高效率也使现有查询获益.在视图上创建 ...
- 【转】NativeScript的工作原理:用JavaScript调用原生API实现跨平台
原文:https://blog.csdn.net/qq_21298703/article/details/44982547 -------------------------------------- ...
- Oracle服务启动顺序导致ORA-12514
在window 上装了oracle11g,按照常规步骤安装完成后一切OK,如下图所示 C:\Users\Administrator>sqlplus /nolog SQL*Plus: Releas ...
- 微信小程序 - promise(get\post)
部分源码来自于http://www.wxapp-union.com/home.php?mod=space&uid=17761,就是小程序社区 , 参考以及借鉴一些类似cnblog,csdn上的 ...
- 借助AWR报告分析解决oracleCPU过高的问题(转)
原文地址:http://www.cnblogs.com/crystal-guoguo/p/4213458.html 简介:在oracle数据库中,有两个非常实用的自带监控工具EM(Enterprise ...
- Java AES 加密工具类
package com.microwisdom.utils; import java.security.NoSuchAlgorithmException; import java.security.S ...
- js 暂时性死区
1.概念 在代码块内,使用let.const命令声明变量之前,该变量都是不可用的.这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ). 2.注意 “暂时性死区”也意味 ...
- ideaIU-15.0.2 注册码
注册时选择 License server ,填 http://idea.lanyus.com ,然后点击 OK
- 解决Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.12.4
Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.12.4 from http://uk.maven.o ...
- HTML+CSS浏览器兼容性问题
浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同 问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大. 碰到频率:100% 解决方案:CSS里 ...