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. 解决macOS升级之后每次使用ssh都要输入密码的问题

      最近想趁着假期把跟了我2年mac的系统重做下.于是就开始行动了,经过大半天的数据备份.然后进行了全盘格式化,使用了在线更新的方式从新安装升级到了10.12.6.这里提醒下有类似的想法的同学可以采用 ...

  2. Java常用集合类

    上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,Abstract ...

  3. MFC学习篇(一):用OpenCV显示视频

    首先是一些基础的步骤,如建立MFC应用,添加按钮等,博主主要参考了下面这篇文章,其中的前32步都是用OpenCV显示图片和视频所必须的,即通用的.由于LZ原来有配置OpenCV的基础,所以配制还是比较 ...

  4. sikuli--前端自动化操作的神器

    前端自动话操作应用很广泛,从网购秒杀活动实现自动化抢购,到区块链货币高频交易前端脚本编写(非合作交易所不提供api的情况下). 自动化的流派分为2类,一类是对DOM对象进行解析的,这个是主流,但是受特 ...

  5. 【转】Linux下使用locale命令设置语言环境

    转自:http://www.cnblogs.com/dolphi/p/3622570.html locale命令设置语言环境 在Linux中通过locale来设置程序运行的不同语言环境,locale由 ...

  6. 在Swift中,如何像Objective-C定义可选接口?

    Objective-C中的protocol里存在@optional关键字,被这个关键字修饰的方法并非必须要被实现.我们可以通过接口定义一系列方法,然后由实现接口的类选择性地实现其中几个方法.在Coco ...

  7. SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(3)变量操作.观测值操作.SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 ...

  8. 1、Xamarin 环境准备

    一.安装环境 1.安装VS2017 2.安装Xamarin扩展包 3.安装NDK 工具栏中,一个为AVD(模拟器管理)一个为NDK(管理Andoid SDK) 3.1 先打开NDK,在Tools\Op ...

  9. sql server 数据库跨服务器备份,复制监视器——快照代理,复制流程

    在做数据库跨服务器复制时,查看复制监视器的快照代理,可以看到复制流程,具体如下: 初始化 连接发布服务器 设置服务器数据库兼容性级别 更新索引的统计信息 在生成快照时锁定已发布的表 复制快照数据(每个 ...

  10. JS——缓动动画

    核心思想: (1)相对于匀速移动,盒子每次移动的步长都是变化的,公式:盒子位置=盒子本身位置+(目标位置-盒子本身位置)/10 (2)在盒子位置与目标距离小于10px时,其步长必然是小数,又由于off ...