1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到;

当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如下

// 声明

@interface  类名  (分类名称)

@end

// 实现

@implementation 类名 (分类名称)

@end

2:分类的好处,当一个类比较庞大时,不同的部分可以放到不同的分类中,也方便团队中类的开发;

3:分类使用注意:

  a:分类不能增加成员变量,只能对原类增加方法;

  b:分类方法实现中,可以访问原来类的成员变量;

  c:分类可以写和类同名的方法,但是这样会覆盖掉原来类的方法,导致永远访问不到原来的类的方法,所以不建议这么做;

    调用顺序:分类——找不到方法时去——>原来类——找不到方法时去——>父类;可见分类的调用优先级最高;

  d:当一个类有单个分类时,且每个分类都由同名方法,调用顺序和编译的顺序有关,最后编译的方法会覆盖先编译的方法,所以最后编译的会被调用;

分类的应用:给NSString增加方法,计算一个字符串中数字的个数;

// 在NSString+intSum.h文件中
// 对NSString类添加一个类方法和对象方法,计算字符串中整数的个数; #import <Foundation/Foundation.h> @interface NSString (intSum) //对NSString类添加一个类方法,计算字符串中整数的个数,声明
+ (int)intSum:(NSString *)str; // 对象方法的声明
- (int)intCount; @end // 在NSString+intSum.m文件中 @implementation NSString (intSum) // 类方法的实现
+ (int)intSum:(NSString *)str
{
int count = ;
for (int i = ; i<str.length; i++) {
int temp = [str characterAtIndex:i];
if (temp > '' && temp < '') {
count++;
}
}
return count;
} // 对象方法的实现,只需调用类方法就可以了;
- (int)intCount
{
return [NSString intSum:self];
} @end // 在main中测试 int main()
{ int sum = [NSString intSum:@"234df56"]; // 调用类方法 int count = [@"234sd454545" intCount]; // 调用对象方法 NSLog(@"sum=%d, count=%d", sum, count);
return ;
}

OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数的更多相关文章

  1. OC的特有语法-分类Category、 类的本质、description方法、SEL、NSLog输出增强、点语法、变量作用域、@property @synthesize关键字、Id、OC语言构造方法

    一. 分类-Category 1. 基本用途:Category  分类是OC特有的语言,依赖于类. ➢ 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 ● 继承 ● 分类(Categor ...

  2. OC特有语法-分类(category)

    本文转载Keefo. Objective-C的Object-oriented programming特性提供subclass和category这2个比较非常重要的部分.subclass应该反复被各种编 ...

  3. oc特有语法

    分类 问题 1.什么是分类? 就是把一个类的功能,分出一部分来放在一个独立的文件中 2.分类的语法是什么样的? @interface Person(SuperMan) 3.分类与类是什么关系? 分类依 ...

  4. OC基础--分类(category) 和 协议(protocol)

    OC 中的category分类文件相当于 C#中的部分类:OC 中的protocol协议文件(本质是头文件)相当于 C#中的接口.今天就简单说明一下OC中的这两个文件. 由于视频中的Xcode版本低, ...

  5. OC分类(Category)

    Category 分类 ,又称为类别.类目 概念 Category有多种翻译:分类.类别.类目(一般叫分类的多) Category式OC特有的语法,其他语言没有的语法(类似于C#语言中的"扩 ...

  6. OC中的特有语法

    一. 分类-Category 1. 基本用途 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 l 继承 l 分类(Category) 2. 格式 分类的声明 @interface 类名  ...

  7. 分类-Category

    1.基本用途 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 继承 分类(Category) 2.格式 分类的声明 @interface 类名 (分类名称) // 方法声明 @end 分 ...

  8. App开发流程之使用分类(Category)和忽略编译警告(Warning)

    Category使得开发过程中,减少了继承的使用,避免子类层级的膨胀.合理使用,可以在不侵入原类代码的基础上,写出漂亮的扩展内容.我更习惯称之为"分类". Category和Ext ...

  9. 05_Java基础语法_第5天(方法)_讲义

    今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 * ...

随机推荐

  1. MVC 页面跳转

    想要学习MVC,那么页面跳转就是必不可少的,在此我总结了常见的页面跳转方式,给自己理一下做个备份,也顺便和大家分享一下. 常见页面跳转的:(下面的视图名和控制器中的方法名一样) 在控制器内部跳转: / ...

  2. (转)Android之接口回调机制

    开发中,接口回调是我们经常用到的. 接口回调的意思即,注册之后并不立马执行,而在某个时机触发执行. 举个例子: A有一个问题不会,他去问B,B暂时解决不出来,B说,等我(B)解决了再告诉你(A)此时A ...

  3. jquery设置div,文本框 表单的值示例

    我们将使用前一章中的三个相同的方法来设置内容: text() - 设置或返回所选元素的文本内容html() - 设置或返回所选元素的内容(包括 HTML标记)val() - 设置或返回表单字段的值 1 ...

  4. JQuery之append和appendTo的区别,还有js中的appendChild用法

    JQuery之append和appendTo的区别 append()前面是要选择的对象,后面是要在对象内插入的元素内容 appendTo()前面是要插入的元素内容且为Jquery对象,而后面是要选择的 ...

  5. IOS 后台执行

    在IOS后台执行是本文要介绍的内容,大多数应用程序进入后台状态不久后转入暂停状态.在这种状态下,应用程序不执行任何代码,并有可能在任意时候从内存中删除.应用程序提供特定的服务,用户可以请求后台执行时间 ...

  6. [转]基于SQL脚本将数据库表及字段提取为C#中的类

    开发时,勉不了需要使用SQL直接与数据库交互,这时对于数据库中的表名及字段名会使用的比较多.如果每使用一次都复制一个,实在蛋疼.所以就考虑将其做成const常量.但是数据库中的表和字段相当多,一个一个 ...

  7. 20150506—WinForm自动生成按钮&按钮拖动

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  8. Spring IoC容器的设计—3—次线

    这里涉及的是主要接口关系,而具体的IoC容器都是在这个接口体系下实现的,比如DefaultListableBeanFactory,这个基本IoC容器的实现就是实现了ConfigurableBeanFa ...

  9. 关联表映射 Association Table Mapping

    把关联保存为一个表,存储关联表的外键 在对象中,使用集合作为域值,来处理多值域. 而在DB中,只能有单值域. 外键映射的核心,是在关联关系的单值端使用外键来维持联系. 而在多对多的关联关系中,已经不存 ...

  10. (转)RabbitMQ消息队列(六):使用主题进行消息分发

    在上篇文章RabbitMQ消息队列(五):Routing 消息路由 中,我们实现了一个简单的日志系统.Consumer可以监听不同severity的log.但是,这也是它之所以叫做简单日志系统的原因, ...