Object-C中Category类体验
Object-C中Category类体验
Object-C开发的时候有的时候会用到Category类,类似于Java和C#中扩展类,就是如果你觉得如果你觉得常用的方法在String中没有,可以根据业务需求和个人喜好写一个扩展类,然后在其中补充自己的方法,如果单纯的扩展已有类型来看基本上是一样的。OC还有可以对已经存在类通过Category进行扩展,这个特点又和C#中的partial class有的类似,先来看下是如何操作的吧:

新建的时候选择Object-C File:

选择类型为Category,第一个是是Categroy名称,第三个类选择可以是知己新建的类,也可以是系统本身的类,本次选的个人新建的:

这个时候生成文件如下:

写了几行代码,Book+FlyElephant.h代码:
|
1
2
3
4
5
6
7
8
|
<span style="font-family: 'Microsoft YaHei';">#import "Book.h"@interface Book (FlyElephant)- (void)detialMore:(NSString*)author;@end</span> |
Book+FlyElephant.m中的代码:
|
1
2
3
4
5
6
7
8
9
10
11
|
<span style="font-family: 'Microsoft YaHei';">#import "Book+FlyElephant.h"@implementation Book (FlyElephant)- (void)detialMore:(NSString*)author{ NSLog(@"分类中可以获取更多的详细信息%@",author);}@end</span> |
具体调用代码:
|
1
2
3
|
<span style="font-family: 'Microsoft YaHei';">Book *book=[Book new]; [book detialMore:@"keso"];</span> |
以上的实现比较简单,上面有一个关于NSString的Categroy类的,跟Book创建差不多,实现了一个方法就是如果字符串超过一定的长度,返回特定值:
NSString+StrExtend.h中的代码:
|
1
2
3
4
5
6
7
8
9
|
<span style="font-family: 'Microsoft YaHei';">#import <Foundation/Foundation.h>@interface NSString (StrExtend)+(NSString *)subStr:(NSString *)originalStr;- (NSString *)subStr2;@end</span> |
NSString+StrExtend.m中的代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<span style="font-family: 'Microsoft YaHei';">#import "NSString+StrExtend.h"@implementation NSString (StrExtend)+ (NSString *)subStr:(NSString *)originalStr{ return [originalStr length]<10?@"长度不够,请重新输入":[originalStr substringWithRange:(NSMakeRange(0, 10))];}- (NSString *)subStr2{ return self.length<10?@"长度不够,请重新输入":[self substringWithRange:(NSMakeRange(0, 10))];}@end</span> |
具体的调用:
|
1
2
3
4
|
<span style="font-family: 'Microsoft YaHei';"> NSLog(@"%@",[NSString subStr:@"气若兰兮长不改,心若兰兮终不移"]); NSString *str=[@"气若兰兮长不改,心若兰兮终不移" subStr2]; NSLog(@"%@",str);</span> |
第一个是静态方法也就是类方法调用需要NSString调用,第二个是动态方法也就是对象方法,调用稍微简单点,其他的应该都很容易理解~如有不当,多多指正~
出处:http://www.cnblogs.com/xiaofeixiang
Object-C中Category类体验的更多相关文章
- C#部分---arraylist集合、arraylist集合中的object数据转换成int类string类等;间隔时间的表示方法;
ArrayList和Array的区别: 相同点:1.两者都实现了IList.ICollection.IEnumerable接口: 2.两者都可以使用证书索引访问集合中的元素,包括读取和赋值 ...
- Objective-C中的类目(Category),延展(Extension)
类目和延展的作用都是为了扩展一个类. Objective-C中的类目(Category) 一.类目的定义和作用 类目也叫分类,英文Category,在没有原类.m文件的基础上,给该类添加方法. 比如, ...
- eclipse环境Dynamic web module version 3.1版本的进步,简化Dynamic web object 中Servlet类的配置,不用web.xml配置<Servlet>
eclipse环境Dynamic web module version 3.1版本之前,Dynamic web object 中Servlet类的配置,要在web.xml 配置<Servlet& ...
- [ios]objective-c中Category类别(扩展类)专题总结
本文转载至 http://yul100887.blog.163.com/blog/static/20033613520126333344127/ objective-c类别的作用?通过类别的方式, ...
- Java 中 常用API概述之 Math, Object, String,StringBuffer类,Arrays,Integer类
Math Math类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数. 与StrictMath类的一些数字方法不同,Math类的StrictMath所有Math都没有定义为返回比特位相同 ...
- ios 中Category类别(扩展类)小结
类别 类别是一种为现有的类添加新方法的方式.利用Objective-C的动态运行时(runtime)分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别catagory,他可以为 ...
- MFC中对话框类(Dialog)的应用
转载http://hi.baidu.com/jackywdx/item/feee8041d2c2e12310ee1e85 Windows应用程序通常是通过对话框接收用户输入.向用户输出信息,本节介绍应 ...
- Junit 注解 类加载器 .动态代理 jdbc 连接池 DButils 事务 Arraylist Linklist hashset 异常 哈希表的数据结构,存储过程 Map Object String Stringbufere File类 文件过滤器_原理分析 flush方法和close方法 序列号冲突问题
Junit 注解 3).其它注意事项: 1).@Test运行的方法,不能有形参: 2).@Test运行的方法,不能有返回值: 3).@Test运行的方法,不能是静态方法: 4).在一个类中,可以同时定 ...
- Python中的类、对象、继承
类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...
随机推荐
- iOS中通讯录电话号码空格问题
今天在读取通讯录的时候,读取到的手机号码格式为* (***) ***-****的,乍看下,数字中间有空格."-".(.)的非数字字符. 然后我就打算替换这些非数字字符,结果替换完, ...
- 3-08. 栈模拟队列(25)(ZJU_PAT 模拟)
主题链接:http://pat.zju.edu.cn/contests/ds/3-08 设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操 ...
- T-SQL性能调整——信息收集
原文:T-SQL性能调整--信息收集 IO信息(自服务器启动开始) --Database IO analysis WITH IOFORDATABASE AS ( SELECT DB_NAME(VFS. ...
- 编写爬虫程序的神器 - Groovy + Jsoup + Sublime(转)
写过很多个爬虫小程序了,之前几次主要用C# + Html Agility Pack来完成工作.由于.NET FCL只提供了"底层"的HttpWebRequest和"中层& ...
- 减少iPhone手机系统版本号
要减少移动版本号,本号,或者到"威风"站点或其他能够下载到iPhone固件的站点上下载固件,然后打开iTunes,进入到 然后按着(alt),同一时候用鼠标点击(更新button) ...
- java反思reflect 分析Object物
直接看它的一个例子 </pre><pre name="code" class="java">package reflect; impor ...
- ThreadLocal是否会引发内存泄露的分析(转)
这篇文章,主要解决一下疑惑: 1. ThreadLocal.ThreadLocalMap中提到的弱引用,弱引用究竟会不会被回收? 2. 弱引用什么情况下回收? 3. JAVA的ThreadLocal和 ...
- 【iOS开展-50】使用它来创建一个新的类的实现代码包,因此,不自觉地练习简单MVC实验,附带动画
接下来说说代码封装最后一个个案. 最后一种情况看:[iOS开展-48]九宫格案例:自己主动布局.字典转模型运用.id和instancetype差别.xib反复视图运用及与nib关系 (1)代码封装的原 ...
- ElasticSearch实战
ElasticSearch实战-入门 1.概述 今天接着<ElasticSearch实战-日志监控平台>一文来给大家分享后续的学习,在<ElasticSearch实战-日志监控平台& ...
- Centos7系统配置上的变化(三)为网络接口添加多IP
原文 Centos7系统配置上的变化(三)为网络接口添加多IP 实验的方法有 nmtui, 编辑ifcfg-*文件,ip addr 指令,子连接配置文件.一.nmtui手工添加IP 看一下当前网络设备 ...