Object-C中Category类体验

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

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

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

这个时候生成文件如下:

写了几行代码,Book+FlyElephant.h代码:

#import "Book.h"

@interface Book (FlyElephant)

- (void)detialMore:(NSString*)author;

@end

  Book+FlyElephant.m中的代码:

#import "Book+FlyElephant.h"

@implementation Book (FlyElephant)

- (void)detialMore:(NSString*)author
{
    NSLog(@"分类中可以获取更多的详细信息%@",author);
}

@end

  具体调用代码:

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

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

NSString+StrExtend.h中的代码:

#import <Foundation/Foundation.h>

@interface NSString (StrExtend)

+(NSString *)subStr:(NSString *)originalStr;
- (NSString *)subStr2;

@end

NSString+StrExtend.m中的代码:

#import "NSString+StrExtend.h"

@implementation NSString (StrExtend)

+ (NSString *)subStr:(NSString *)originalStr
{
    return [originalStr length]<[email protected]"长度不够,请重新输入":[originalStr substringWithRange:(NSMakeRange(0, 10))];
}
- (NSString *)subStr2
{
    return  self.length<[email protected]"长度不够,请重新输入":[self substringWithRange:(NSMakeRange(0, 10))];
}

@end

  具体的调用:

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

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

时间: 2024-08-26 05:56:16

Object-C中Category类体验的相关文章

objective-c中Category类别(扩展类)专题总结

objective-c中Category 类别.扩展 专题总结 http://blog.csdn.net/jiajiayouba/article/details/21105873 分类: IOS 2014-03-12 18:19 1293人阅读 评论(0) 收藏 举报 类别扩展 objective-c中Category类别(扩展类)专题总结 objective-c类别的作用? 通过类别的方式,可以将类的实现分散到不同的文件里. haoxue 2011-11-19 14:03 类别 类别是一种为现

ios 中Category类别(扩展类)专题总结

原创地址   http://www.code4blog.com/archives/294 类别 类别是一种为现有的类添加新方法的方式. 利用Objective-C的动态运行时分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别catagory,他可以为任何类添加新的方法,包括那些没有源代码的类. 类别使得无需创建对象类的子类就能完成同样的工作 一.创建类别 1.声明类别 声明类别与声明类的形式很相似 @interface  NSString(NumberConvenienc

Objective-C中的类目(Category),延展(Extension)

类目和延展的作用都是为了扩展一个类. Objective-C中的类目(Category) 一.类目的定义和作用 类目也叫分类,英文Category,在没有原类.m文件的基础上,给该类添加方法. 比如,NSString类原本没有helloString方法,我们又没有NSString类的原代码,那我们想给NSString类添加一个helloString的方法,只有通过声明子类或者类目才可以达到这个目的. 二.类目的声明: @interfaceNSString (hello) - (void)hell

eclipse环境Dynamic web module version 3.1版本的进步,简化Dynamic web object 中Servlet类的配置,不用web.xml配置&lt;Servlet&gt;

eclipse环境Dynamic web module version 3.1版本之前,Dynamic web object 中Servlet类的配置,要在web.xml 配置<Servlet>图片和代码如下: web.xml中源代码如下: <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins

[ios]objective-c中Category类别(扩展类)专题总结

本文转载至 http://yul100887.blog.163.com/blog/static/20033613520126333344127/ objective-c类别的作用?通过类别的方式,可以将类的实现分散到不同的文件里. 类别类别是一种为现有的类添加新方法的方式.利用Objective-C的动态运行时分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别catagory,他可以为任何类添加新的方法,包括那些没有源代码的类.类别使得无需创建对象类的子类就能完成同样的工

ios 中Category类别(扩展类)小结

类别 类别是一种为现有的类添加新方法的方式.利用Objective-C的动态运行时分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别catagory,他可以为任何类添加新的方法,包括那些没有源代码的类.类别使得无需创建对象类的子类就能完成同样的工作一.创建类别1.声明类别声明类别与声明类的形式很相似 @interface  NSString(NumberConvenience)-(NSNumber *)lengthAsNumber;@end//NumberConvenie

Android技术18:Android中Adapter类详解

1.Adapter设计模式 Android中adapter接口有很多种实现,例如,ArrayAdapter,BaseAdapter,CursorAdapter,SimpleAdapter,SimpleCursorAdapter等,他们分别对应不同的数据源.例如,ArrayAdater对应List和数组数据源,而CursorAdapter对应Cursor对象(一般从数据库中获取的记录集).这些Adapter都需要getView方法返回当前列表项显示的View对象.当Model发生改变时,会调用Ba

(转载)虚幻引擎3--第三章–Unreal中的类

第三章–Unreal中的类 3.1概述 3.2 NATIVE 对 非-NATIVE 3.3类声明 EXTENDS 关键字 指南 3.1您的第一个类声明 3.4类的修饰符 NATIVE(PACKAGENAME) NATIVEREPLICATION DEPENDSON(CLASSNAME[,CLASSNAME,...]) ABSTRACT DEPRECATED TRANSIENT NONTRANSIENT CONFIG(ININAME) Engine Editor Game Input PEROBJ

读书笔记--关于Cocoa框架中的类

Chapter 10 Cocoa Classes iOS编程时, 实际是进行Cocoa编程. 所以必须熟悉Cocoa, 必须知道Cocoa是什么, 它能够做什么, 你和Cocoa如何进行"交流". Cocoa是一个庞大的Framework, 被分割成若干较小的Framework. 任何iOS编程人员都需要花费一定时间来熟练Cocoa. Cocoa中含有一些主要的规则和组件, 最好是以它们为主线来学习Cocoa. Cocoa大部分类都是OC写的, 虽然OC类和Swift类能相互转换.但S