今天咱们详细的讲一下类目,所谓类目就是为已存在的类添加方法,但是不能添加成员变量。

首先为NSString添加分类

首先到xcode里面,直接上图

#import <Foundation/Foundation.h>

@interface NSString (module)

- (int)calculationTheNumberOfArabicNumeralsInString;

+ (int)calculationTheNumberOfArabicNumeralsWithString:(NSString *)string;

+ (void)test;

@end

@implementation Person

+ (void)test{

NSLog(@"Person---test");

}

@end

#import "NSString+module.h"

@implementation NSString (module)

- (int)calculationTheNumberOfArabicNumeralsInString{

int count = 0;

for (int i = 0; i < self.length; i++) {

char a = [self characterAtIndex:i];

if (a >= '0' && a <= '9') {

count++;

}

}

return count;

}

+ (int)calculationTheNumberOfArabicNumeralsWithString:(NSString *)string{

return  [string calculationTheNumberOfArabicNumeralsInString];

}

NSString+module.h里面的module是为工程里面哪个模块添加分类

这样在ViewController.m里面

NSString *str = @"123flahfho1234567";

int num = [str calculationTheNumberOfArabicNumeralsInString];

int num1 = [NSString calculationTheNumberOfArabicNumeralsWithString:str];

NSLog(@"调用对象方法这个字符串中的阿拉伯数字的个数是%d个",num);

NSLog(@"调用类方法这个字符串中的阿拉伯数字的个数是%d个",num1);

//打印结果如下:

//    2017-07-13 11:03:47.114 分类又叫类目[65722:826033] 调用对象方法这个字符串中的阿拉伯数字的个数是10个

//    2017-07-13 11:03:53.313 分类又叫类目[65722:826033] 调用类方法这个字符串中的阿拉伯数字的个数是10个

到这里就为NSStirng添加了一个分类

但是有的同学可能有疑问,就是类里面的方法和分类里面的方法能不能名字一样?答案是可以方法名相同,但是问题来了,到底是调用哪个同名方法呢以及它们的优先级谁高谁低?好的,下面我们一起来探究一下

首先创建一个继承于NSObject的Person类,并且为里面添加方法:

#import <Foundation/Foundation.h>

@interface Person : NSObject

+ (void)test;

@end

#import "Person.h"

@implementation Person

+ (void)test{

NSLog(@"Person---test");

}

@end

再为这个类创建两个分类

#import "Person.h"

@interface Person (First)

+ (void)test;

@end

#import "Person+First.h"

@implementation Person (First)

+ (void)test{

NSLog(@"Person+First.h---test");

}

@end

#import "Person.h"

@interface Person (Second)

+ (void)test;

@end

#import "Person+Second.h"

@implementation Person (Second)

+ (void)test{

NSLog(@"Person+Second.h---test");

}

@end

这样就创建了两个分类,并且分类里面的方法名是一样的,然后在ViewController.m里面调用

[Person test];

打印结果如下:

2017-07-13 11:17:20.446 分类又叫类目[65844:832770] Person+Second.h---test

说明分类的优先级是高于类本身的方法,但是究竟是哪个分类的优先级高呢,还得看这里,如图

就是说这两个分类谁在下面就调用谁的方法,也许有的同学会说Person.m放到下面会不会先调用自身的方法呢,答案是:NO。

所以综上所述

分类的优先级 > 自身类,至于那个分类的优先级高,那就得看先加载哪个分类的.m文件了,唉!

分类又叫类目或者类别相关推荐

  1. 2.JAVAEE-电子商城-类目管理模块

    文章目录 一.实现步骤: 1.后端(6步骤):ItemCategory实体类-->ItemCategory接口-->ItemCategory接口配置文件-->ItemCategory ...

  2. 个人小程序支持哪些小程序服务类目

    大家都知道微信小程序从注册主体上分为个人小程序和企业小程序,其中,个人小程序因为注册后无法认证被平台在很多方面限制了权限,使得个人小程序和企业小程序的区别很大,其中之一就是在小程序服务类目上的范围不一 ...

  3. OC--category(类目、分类、类别)

    category:在我看到的各种资料中,通常有3中翻译:类目.分类.类别.其实都是一个意思,表示对一个类的扩充. category使用的优点: 可以随时给类添加方法,这种添加不需要去创建子类的,而且添 ...

  4. Category(分类/类目)、Protocol(协议)、Extension(扩展/延展)

    Category(分类/类目): 利用Objective-C的动态运行时分配机制,Category提供了一种比继承更为简洁的方法来对class进行扩展,无需创建对象类的子类就能为现有的类添加新方法,可 ...

  5. 功能点分析:商品类目表

    前言 作为电商网站,必然要有商品类目表,以便商品分类检索.而设计商品类目表,又是一件特别繁杂的事情.一件商品可能有多个类目来检索出来,比如苹果手机,可以从品牌检索也可以从手机检索.一个类目对应多个商品 ...

  6. 弘辽科技:淘宝类目属性的型号是什么?

    在整个淘宝店铺运营过程中,发布产品可以说是最为简单的事情,我们将产品图片和详情页都设计好之后,直接上传就行.不过,在上传的时候,有一些细节需要注意. 一.目属性的型号是什么? 类目属性型号就是内部给定 ...

  7. 大咖分享|李志强:一文详解标签类目体系落地方法与建设价值

    讲师介绍 李志强(莫奈),数澜科技资深数据专家,近10年大数据行业工作经验,先后参与过某大型股份制银行信用卡营销平台建设.时尚集团数据化平台建设项目.长虹数据中台项目等大型集团公司数字化项目,擅长企业 ...

  8. 淘淘商城第三天—完成商品添加功能 商品类目选择 图片上传 图片服务器搭建 kindEditor富文本编辑器的使用 商品添加功能

    1.实现商品类目选择功能 1.1需求 在商品添加页面,点击"选择类目"显示商品类目列表: 请求初始化树形控件的url:/item/cat/list 1.2 EasyUI tree数 ...

  9. 乐而得教育:店铺类目怎么选择

    在拼多多开店后,每次上传商品都要分类,因为商品一定要有对应的品类.如何在拼多多发布其他类别?下面小编就为大家解答这个问题. 不能选错店铺的类目 如果商品放错了品类,比如衣服,不要以为买家在选衣服的时候 ...

最新文章

  1. 2019年上半年收集到的人工智能LSTM干货文章
  2. 机器学习系列(2)_从初等数学视角解读逻辑回归
  3. C#中使用StreamReader实现文本文件的读取与写入
  4. k8s查看节点CPU消耗情况
  5. TLS1.3握手流程以及参数详解
  6. 前端学习(1603):脚手架组件使用
  7. Kinect v1在windows上的使用教程
  8. 【kafka】kafka 如何开启 kafka.consumer的监控指标项
  9. 【文件游标的设置、获取与恢复;其它文件库函数的使用】(学习笔记20--文件下)
  10. fla 优化思路 flash cs6
  11. hprose php用户手册,04 协程 - 《Hprose for PHP 用户手册》 - 书栈网 · BookStack
  12. Android日期类组件学习
  13. 手机拍照反差对焦、相位对焦和激光对焦系统解析
  14. 多维数组变成一维数组
  15. postgresql修改密码
  16. 杰理-手表-AC701-watch-马达振动一次
  17. [转] 程序员也要养生
  18. java锁源码分析-1获取锁的过程
  19. SpringBoot+Vue高校学生评教系统java教学质量评估系统
  20. 51DIY音乐频谱显示

热门文章

  1. 中小企业网络构架环境搭建
  2. PHP上传图片三个步骤详细分析
  3. PHP接口上传文件图片详解
  4. C# WPF TabControl控件用法详解
  5. timeGetTime
  6. 多线程详解第3讲:线程状态
  7. 计算机网络实验二 CDMA 编码 [17/10/25]
  8. 创新工厂CEO李开复:互联网的九个产品精神
  9. 超详细的MySQL三万字总结
  10. 数据中心机架与服务器,数据中心服务器机架是什么?