IOS分类(Category)
分类(Category):拓展原有类的方法,而不影响原有类的子类,分类中不能创建成员变量。
分类的使用:
1.创建分类:

如图点击(File)选择(New)->(File).. 或者使用快捷键command+N,进入上面的界面,选择(Objective-C File)图标,点击(Next)按钮,进入以下界面。

进入此界面我们需要注意(File Type) 以及(Class)下拉选项,我们的目的很明确,我们要创建分类,所以(File Type)选择"Category",Class选项的意思是,我们要为那个类进行拓展分类,比如我打算给NSString类拓展一些方法,这里我就选择NSString类,File文件名这个根据自己的实际情况填写,点击(Next)按钮,进入下个界面选择(Create)按钮完成分类的创建。

分类创建完之后的命名规则,(扩展的类名+分类的名称)。
2.分类我们已经创建成功,接着我们在分类中编写我们需要扩展的方法,这里方法的创建其实和其他类的创建是一样的。
首先我们在分类中创建我们所需要的方法:
#import <Foundation/Foundation.h> @interface NSString (CFStringWithName)
// 接头中定义一个方法
+ (NSString *)stringWithReplace:(NSString *)charset; @end #import "NSString+CFStringWithName.h" @implementation NSString (CFStringWithName)
// 方法很简单,如果想过滤一些关键字,就可以通过NSString类中的分类stringWithReplace方法完成
+ (NSString *)stringWithReplace:(NSMutableString *)charset
{ // 需要过滤的子都存放在数组中
NSMutableArray *charArray = [NSMutableArray arrayWithObjects:@"百度",@"淘宝",@"腾讯", nil];
NSString *newValue = charset;
// 通过for循环取出数组中需要过滤的关键字,进行替换。
for (NSString *str in charArray)
{
newValue = [newValue stringByReplacingOccurrencesOfString:str withString:@"**" ]; }
// 返回过滤之后的语句
return newValue;
} @end /**
*main 程序的入口
**/
// 如果想使用分类,即必须导入分类的头文件。
#import "NSString+CFStringWithName.h" int main(int argc, const char * argv[]) {
@autoreleasepool {
// 通过NSString的category过滤字符中特殊字符。
NSString *str = [NSString stringWithReplace:@"今天所讲的淘宝是一家上市公司,百度是一家搜索公司。"];
NSLog(@"%@",str);
}
return 0;
}
总结:分类用起来还是蛮爽快的,不破坏子类而且能扩展更多的好的方法。
IOS分类(Category)的更多相关文章
- iOS分类Category探索
什么是Category? Category是Objective-C 2.0之后添加的语言特性,Category的主要作用是为已经存在的类添加方法,一般称为分类,文件名格式是"NSObject ...
- iOS分类(category),类扩展(extension)—史上最全攻略
背景: 在大型项目,企业级开发中多人同时维护同一个类,此时程序员A因为某项需求只想给当前类currentClass添加一个方法newMethod,那该怎么办呢? 最简单粗暴的方式是把newMethod ...
- ios 分类(Category)
今天研究了类别,都是网上找的资料,类别的作用 类别主要有3个作用: (1)将类的实现分散到多个不同文件或多个不同框架中. (2)创建对私有方法的前向引用. (3 ...
- 关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol
关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol 2014-02-18 19:57 315人阅读 评论(0) 收藏 举报 1.category, ...
- iOS之分类(category)
1.分类(category)的作用 1.1作用:可以在不修改原来类的基础上,为一个类扩展方法.1.2最主要的用法:给系统自带的类扩展方法. 2.分类中能写点啥? 2.1分类中只能添加“方法”,不能增加 ...
- iOS中 分类(category)与扩展(Extension)的区别?
1.分类(category)的作用 (1).作用:可以在不修改原来类的基础上,为一个类扩展方法.(2).最主要的用法:给系统自带的类扩展方法. 2.分类中能写点啥? (1).分类中只能添加“方法”,不 ...
- 从C#到Objective-C,循序渐进学习苹果开发(3)--分类(category)和协议Protocal的理解
本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本文继续上一篇随笔<从 ...
- iOS类别(Category)
iOS类别(Category)与扩展(Extension) 苹果的官方文档 Category在iOS开发中使用非常频繁.尤其是在为系统类进行拓展的时候,我们可以不用继承系统类,直接给系统类添加方法,最 ...
- iOS分类底层实现原理小记
摘要:iOS分类底层是怎么实现的?本文将分如下四个模块进行探究分类的结构体编译时的分类分类的加载总结本文使用的runtime源码版本是objc4-680文中类与分类代码如下//类@interfaceP ...
- 分类(Category)的本质 及其与类扩展(Extension) /继承(Inherit)的区别
1.分类的概念 分类是为了扩展系统类的方法而产生的一种方式,其作用就是在不修改原有类的基础上,为一个类扩展方法,最主要的是可以给系统类扩展我们自己定义的方法. 如何创建一个分类?↓↓ ()Cmd+N, ...
随机推荐
- 给新手的 10 个有用 Linux 命令行技巧
我记得我第一次使用 Linux 的时候,我还习惯于 Windows 的图形界面,我真的很讨厌 Linux 终端.那时候我觉得命令难以记忆,不能正确使用它们.随着时间推移,我意识到了 Linux 终端的 ...
- 开始使用storm
开始使用storm 本章将讲述如何安装.部署.启动和停止 Storm 集群. Storm 的安装比较简单,但在安装 Storm 之前需要做好充足的准备,本章将介绍安装的整个流程.在官网上可以下载到S ...
- Oracle数据库字符串连接方法
转至:http://database.51cto.com/art/201011/232267.htm 和其他数据库系统类似,Oracle字符串连接使用“||”进行字符串拼接,其使用方式和MSSQLSe ...
- Emmet:一个Html/Css快速编辑神器的插件
一.介绍:Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语法来生成代码,大大提高了HTML/CSS代码编写的速度 二.使用 ...
- Recommended add-ons/plugins for Microsoft Visual Studio
http://stackoverflow.com/questions/2767/recommended-add-ons-plugins-for-microsoft-visual-studio NUGe ...
- jekyll bootstrap更改主题theme
使用主题 介绍: 由于JB版本号0.2.X的主题,如今全然是模块化的.他们跟踪和单独版本号的主题包. 这让每一个人都能够自由公布和共享主题. Jekyll-Bootstrap v 0.2.x仅仅附带t ...
- centos 7 修改主机名称
hostnamectl --static set-hostname <host-name> 参考资料 http://www.centoscn.com/CentOS/config/2014/ ...
- [React] React Fundamentals: transferPropsTo
the transferPropsTo method lets you easily push properties into your components to easily customize ...
- MySQL主主复制+LVS+Keepalived实现MySQL高可用性1
http://bestvivi.com/2015/09/09/MySQL%E4%B8%BB%E4%B8%BB%E5%A4%8D%E5%88%B6+LVS+Keepalived%E5%AE%9E%E7% ...
- 文件和目录之mkdir和rmdir函数
用mkdir函数创建目录,用rmdir函数删除目录. #include <sys/stat.h> int mkdir( const char *pathname, mode_t mode ...