Objective-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
#import "Book.h"
 
@interface  Book (FlyElephant)
 
- ( void )detialMore:( NSString *)author;
 
@end

  Book+FlyElephant.m中的代码:

1
2
3
4
5
6
7
8
9
10
#import "Book+FlyElephant.h"
 
@implementation  Book (FlyElephant)
 
- ( void )detialMore:( NSString *)author
{
     NSLog (@ "分类中可以获取更多的详细信息%@" ,author);
}
 
@end

  具体调用代码:

1
2
Book *book=[Book  new ];
     [book detialMore:@ "keso" ];

 以上的实现比较简单,上面有一个关于NSString的Categroy类的,跟Book创建差不多,实现了一个方法就是如果字符串超过一定的长度,返回特定值:

NSString+StrExtend.h中的代码:

1
2
3
4
5
6
7
8
#import <Foundation/Foundation.h>
 
@interface  NSString  (StrExtend)
 
+( NSString  *)subStr:( NSString  *)originalStr;
- ( NSString  *)subStr2;
 
@end

NSString+StrExtend.m中的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#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

  具体的调用:

1
2
3
NSLog (@ "%@" ,[ NSString  subStr:@ "气若兰兮长不改,心若兰兮终不移" ]);
  NSString  *str=[@ "气若兰兮长不改,心若兰兮终不移"  subStr2];
  NSLog (@ "%@" ,str);

  第一个是静态方法也就是类方法调用需要NSString调用,第二个是动态方法也就是对象方法,调用稍微简单点,其他的应该都很容易理解~如有不当,多多指正~

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4215696.html,如需转载请自行联系原作者

相关文章
|
Java iOS开发 C++
Objective-C类别(category)和扩展(Extension)的基本概念
Objective-C类别(category)和扩展(Extension)的基本概念
165 0
|
iOS开发 编译器 开发者
Objective-C中Extension与Category的使用
Objective-C 2.0增加了class extensions用于解决两个问题: 允许一个对象可以拥有一个私有的interface,且可由编译器验证。
863 0
|
4月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
97 2
|
4月前
|
安全 JavaScript 前端开发
IOS开发基础知识:介绍一下 Swift 和 Objective-C,它们之间有什么区别?
IOS开发基础知识:介绍一下 Swift 和 Objective-C,它们之间有什么区别?
68 0
|
机器学习/深度学习 API iOS开发
【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词(一)
【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词(一)
141 0
|
存储 自然语言处理 Java
【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词(二)
【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词(二)
218 0