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调用,第二个是动态方法也就是对象方法,调用稍微简单点,其他的应该都很容易理解~如有不当,多多指正~
作者:FlyElephant
出处: http://www.cnblogs.com/xiaofeixiang
说明:博客经个人辛苦努力所得,如有转载会特别申明,博客不求技惊四座,但求与有缘人分享个人学习知识,生活学习提高之用,博客所有权归本人和博客园所有,如有转载请在显著位置给出博文链接和作者姓名,否则本人将付诸法律。
出处: http://www.cnblogs.com/xiaofeixiang
说明:博客经个人辛苦努力所得,如有转载会特别申明,博客不求技惊四座,但求与有缘人分享个人学习知识,生活学习提高之用,博客所有权归本人和博客园所有,如有转载请在显著位置给出博文链接和作者姓名,否则本人将付诸法律。