参考资料:iOS设计模式——Category

Category

  • Category模式用于向已经存在的类添加方法从而达到扩展已有类的目的。
  • 相当于Swift中的功能扩展(extension)。
  • 新添加的方法同样也会被被扩展的类的所有子类自动继承。

Category的用途

1、 在不创建继承类的情况下实现对已有类的扩展。
2、 简化类的开发工作(当一个类需要多个程序员协同开发的时候,Category可以将同一个类根据用途分别放在不同的源文件中,从而便于程序员独立开发相应的方法集合)。
3、将常用的相关的方法分组。
4、 在没有源代码的情况下可以用来修复BUG。

示例:

在项目中添加文件选着Category文件类型

Objective-C-Category.jpg

NSString+EndWith.h


#import <Foundation/Foundation.h> @interface NSString (EndWith)
-(BOOL)endWith:(NSString*)end; @end

NSString+EndWith.m

#import "NSString+EndWith.h"

@implementation NSString (EndWith)
-(BOOL)endWith:(NSString *)end{
NSString *selfEnd = [self substringFromIndex:[self length]-[end length]];
return [selfEnd isEqualToString:end];
} @end

main.m

#import <Foundation/Foundation.h>
#import "NSString+EndWith.h"
int main(int argc, const char * argv[]) {
@autoreleasepool { NSString * str = @"c:/Media/mp3/xxx.mp3";
NSLog(@"%d",[str endWith:@".mp3"]);
}
return 0;
}

Objective-C 之category的更多相关文章

  1. OC小结

    #import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * a ...

  2. Automake

    Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...

  3. Objective-C( Category 分类,非正式协议,分类延展)

    分类: 主要是给原来类增加一些方法;不可以增加成员变量 Person (Person+eat) 非正式协议: 非正式协议就是类别,即凡是NSObject或其子类Foundation框架中的类增加的类别 ...

  4. objective c, category 和 protocol 中添加property

    property的本质是实例变量 + getter 和 setter 方法 category和protocol可以添加方法 category 和 protocol中可以添加@property 关键字 ...

  5. Objective的字符串拼接 似乎没有Swift方便,但也可以制做一些较为方便的写法

    NSString *str1 = @"字符串1"; NSString *str2 = @"字符串2"; //在同样条件下,Objective的字符串拼接 往往只 ...

  6. Objective C运行时(runtime)

    #import <objc/runtime.h> void setBeingRemoved(id __self, SEL _cmd) { NSLog(@"------------ ...

  7. 刨根问底Objective-C Runtime

    http://chun.tips/blog/2014/11/05/bao-gen-wen-di-objective%5Bnil%5Dc-runtime-(2)%5Bnil%5D-object-and- ...

  8. Objective C类方法load和initialize的区别

    Objective C类方法load和initialize的区别   过去两个星期里,为了完成一个工作,接触到了NSObject中非常特别的两个类方法(Class Method).它们的特别之处,在于 ...

  9. Objective C运行时(runtime)技术的几个要点总结

    前言:          Objective C的runtime技术功能非常强大,能够在运行时获取并修改类的各种信息,包括获取方法列表.属性列表.变量列表,修改方法.属性,增加方法,属性等等,本文对相 ...

  10. Objective-C与C++的区别

    1.两者的最大相同:都是从C演化而来的面相对象语言,两者都兼容标准C语言 2.两者的最大不同:Objective-C提供了运行期动态绑定机制,而C++是编译静态绑定,并且通过嵌入类(多重继承)和虚函数 ...

随机推荐

  1. java内存模型—先行发生原则

    Java语言中有一个“先行发生”(happens-before)的原则.这个原则非常重要,它是判断数据是否存在竞争,线程是否安全的主要依据,依赖这个原则,我们可以通过几条规则一揽子解决并发环境下两个操 ...

  2. [Excel]拾取杂志图表的配色

    ColorPix是一款绿色的小软件,可以取到杂志图表所用到的颜色. 下载地址: http://www.colorschemer.com/colorpix_info.php

  3. idea注释字体倾斜的解决办法

    File-->Settings-->Editor--> Color Scheme-->Language Defaults-->Comments-->Line con ...

  4. ubuntu12.04安装nox-classic

    Setup Nox repo for ‘nox-dependencies’ package $ cd /etc/apt/sources.list.d/ $ wget http://openfl ...

  5. 移动端html5页面导航栏悬浮遮挡内容第一行解决办法

    参考:https://zhidao.baidu.com/question/1608232105428062147.html 1.设置导航栏div属性position:fixed; .nav-fixed ...

  6. FORM 错误:此责任无可用函数。 更改责任或与您的系统管理员联系。

    错误:此责任无可用函数. 更改责任或与您的系统管理员联系. 2014-07-02 12:20:47 分类: Oracle Symptom 访问Help->Diagnostics->Exam ...

  7. Windbg and resources leaks in .NET applications 资源汇总

    Windows Forms Leaks 1.http://blogs.msdn.com/b/tess/archive/2008/02/04/net-debugging-demos-informatio ...

  8. testNG的高级用法 --DataProvider

    @DataProvider Method参数 数据提供者的第一个参数是java.lang.reflect.Method,TestNG传递这个将调用的测试方法.如果您希望数据提供者根据不同的测试方法返回 ...

  9. Net特性类Description了解下

    NET特性类都有个特点类名+Attribute,继承基类Attribute,我们看下微软自带的特性类:DescriptionAttribute namespace System.ComponentMo ...

  10. 自己从0开始学习Unity的笔记 IV (C#循环练习-数字猜谜游戏)

    想起来现在基础的已经学了不少了,那么这次试一下用while写一个数字猜谜的. Random roll = new Random(); //建立一个骰子 , ); //让骰子在1-100内随机一个数 ; ...