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. 题解报告:hdu 1213 How Many Tables

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1213 Problem Description Today is Ignatius' birthday. ...

  2. Android App签名(为apk签名)

    最近有朋友问到 android 签名的问题,所以转一篇给大家分享: 这篇文章是android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用. 1.签名的意义 为了保证每个应用程序开 ...

  3. 338 Counting Bits Bit位计数

    给定一个非负整数 num. 对于范围 0 ≤ i ≤ num 中的每个数字 i ,计算其二进制数中的1的数目并将它们作为数组返回.示例:比如给定 num = 5 ,应该返回 [0,1,1,2,1,2] ...

  4. Hadoop Hive概念学习系列之hive里的扩展接口(CLI、Beeline、JDBC)(十六)

    <Spark最佳实战  陈欢>写的这本书,关于此知识点,非常好,在94页. hive里的扩展接口,主要包括CLI(控制命令行接口).Beeline和JDBC等方式访问Hive. CLI和B ...

  5. 11 在C#中写文件

    在这个练习中,我们来学习如何把我们想要的东西写到文件中.我们在这个练习中还是使用File类中的方法来完成写文件的操作. 在这个练习中我们要用C#创建一个纯文本文件ex11.txt 放到c盘的Exerc ...

  6. iOS图片瘦身总结

    前言 最近在公司写了个小程序来为iOS应用中的图片瘦身,进而减小APP大小,减少用户下载时的流量. 瘦身是在一个专门为图片瘦身的网站进行的. 地址:https://tinypng.com 这个网站提供 ...

  7. mysql命令行导出数据

    1. 包含表头 mysql -h${1} -P${2} -u${3} -p${4} -Dpom_${5} --default-character-set=utf8 -B -e > result. ...

  8. 抓包工具Fiddler及Charles

    一.抓包工具介绍 1.charles抓包如何抓取手机端数据包(安卓手机) (1)获取pc的IP地址 (2)打开charles里的[Proxy]-[Proxy setting],设置端口号,默认为888 ...

  9. PHP 之用证书对数据进行签名、验签、加密、解密

    /** * 对数据进行签名 * $data = 'If you are still new to things, we’ve provided a few walkthroughs to get yo ...

  10. CAD插入jpg

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...