1.Category概述

那的Category的使用场景有那些呢:

1、类包括了非常多个方法实现,而这些方法须要不同团队的成员来实现

2、当你在使用基础类库中的类时,你不想继承这些类而仅仅想加入一些方法时。

Category能实现上面的需求,当然也有使用Category是须要注意的问题:

1、Category能够訪问原始类的实例变量,但不能加入实例变量,假设想加入变量,那就通过继承创建子类来实现。

2、Category能够重载原始类的方法,不大不推荐这么做,这样会覆盖掉原始类的方法。假设确实要重载。那就通过继承创建子类来实现。

3、和普通接口有所差别的是,在Category的实现文件里的实例方法仅仅要你不去调用它你能够不用实现全部声明的全部方法。

2.实例

@interface NSString (PLUS)

- (int)numberCount;

@end

@implementation NSString (PLUS)

- (int)numberCount
{
int count = 0;
NSUInteger len = [self length];
for (int i=0; i<len; i++) {
unichar ch = [self characterAtIndex:i];
if(ch>='0' && ch<='9'){
count++;
}
}
return count;
} @end
#import <Foundation/Foundation.h>
#import "NSString+PLUS.h" //import int main(int argc, const char * argv[])
{
NSString *s = @"ad7a8da9d9a1d1";
NSLog(@"%@ len = %d", s, [s numberCount]); return 0;
}

3.类别的作用

(1)能够将类的实现分散到多个不同文件或多个不同框架中。方便代码管理。也能够对框架提供类的扩展(没有源代码,不能改动)。

(2)创建对私有方法的前向引用:假设其它类中的方法未实现,在你訪问其它类的私有方法时编译器报错这时使用类别。在类别中声明这些方法(不必提供方法实现),编译器就不会再产生警告

(3)向对象加入非正式协议:创建一个NSObject的类别称为“创建一个非正式协议”。由于能够作为不论什么类的托付对象使用。

IOS_OC_Category的更多相关文章

随机推荐

  1. linux top 的用法

    本篇博文主要讲解有关top命令,top命令的主要功能是查看进程活动状态以及一些系统状况. TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终 ...

  2. 题解报告:poj 3070 Fibonacci

    题目链接:http://poj.org/problem?id=3070 Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, a ...

  3. 设计模式 Singleton 单例 懒汉,线程安全

    首先来明确一个问题,那就是在某些情况下,有些对象,我们只需要一个就可以了, 比如,一台计算机上可以连好几个打印机,但是这个计算机上的打印程序只能有一个, 这里就可以通过单例模式来避免两个打印作业同时输 ...

  4. SharePoint通过IP地址访问

    问题:SP站点通过计算机名称可以访问,但不能通过IP地址访问 解决方案:打开SharePoint2010管理中心>应用程序管理>配置备用访问映射>编辑公用 URL 备用访问映射集:选 ...

  5. 学习c语言的感想

    其实个人认为无论学习什么语言,最重要的是掌握习编程思想,然而C语言一种学习编程思想的基础语言.所以,C语言的重要性不言而喻. 一.课本 无论用的是什么书,要学好C语言,把书上的每一个例题.习题的代码读 ...

  6. JQuery:常用知识点总结

    jQuery本质上就是一个外部的js文件(jQuery.js),该文件中封装了很多js代码,实现了很多功能.并且jQuery有非常丰富的插件,大多数功能都有相应的插件解决方案.jQuery的宗旨是wr ...

  7. mysql GTID主从复制(主库在线,添加新丛库)

    要求: 1.         主库上线,主库不停止服务的前提下做主从复制 2.         新添加一个丛库 操作: 1.         在主库导出数据(主库正常运行): 2.         将 ...

  8. C#使用Win32函数的一些类型转换

    C#在访问Win 32 Api时需要处理C 结构与C#结构的映射,这在MSDN以及许多Blog上都可以找到参考的资料.Win 32 中有一些定义复杂的Struct,这些结构体拥有长度固定的数组或者一些 ...

  9. day04-交互、格式化输出及基本运算符

    目录 与用户交互 python2和python3交互的区别 格式化输出 1 字符串拼接 2 占位符 3 format格式 4 f-string格式 基本运算符 算术运算符 比较运算符 赋值运算符 逻辑 ...

  10. url取值乱码问题,url加中文导致页面不能加载问题 js unicode转码,以及解码

    很多时候写H5或其他适配时,打不开url.很多原因是因为浏览器不支持中文url,从url拿 出来的中文值也会乱码,这时候就必须把中文转化成Unicode值,去进行页面传值 中文转Unicode fun ...