OC类别

有时我们需要在一个已经定义好的类中增加一些方法,而不想去重写该类。比如,当工程已经很大,代码量比较多,或者类中已经包住很多方法,已经有其他代码调用了该类创建对象并使用该类的方法时,可以使用类别对该类扩充新的方法。

注意1:

类别只能扩充方法,而不能扩充成员变量。

注意2:

(1)分类只能增加方法(包括类方法和对象方法),不能增加成员变量

(2)在分类方法的实现中可以访问原来类中的成员变量;

(3)分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原来的方法无法再使用(警告);

(4)方法调用的优先级:分类->原来的类->父类,若包含有多个分类,则最后参与编译的分类优先;

(5)在很多的情况下,往往是给系统自带的类添加分类,如NSObject和NSString,因为有的时候,系统类可能并不能满足我们的要求。

(6)在大规模的应用中,通常把相应的功能写成一个分类,可以有无限个分类,对原有类进行扩充,一般分模块写,一个模块一个分类。

时间: 2024-10-25 03:31:27

OC类别的相关文章

##oc在类别里给类加属性以及原理

oc在类别里给类加属性以及原理 如何在类别里给类加属性呢,有鸭子模样的我们就认为他是鸭子了. @interface NSObject (XY) @property (nonatomic, strong) id tempObject; @end @implementation NSObject (XY) @dynamic tempObject; - (id)tempObject - { id object = objc_getAssociatedObject(self, NSObject_key_

OC中类别、扩展、协议与委托

类别(category)--通过使用类别,我们可以动态地为现有的类添加新方法,而且可以将类定义模块化地分不到多个相关文件中.通常只在类别中定义方法. 类别,接口部分的定义,通常该文件命名为已有"类+类别名.h" @interface 已有类 (类别名) //.......方法实现 @end 例如,考虑为NSNumber增加一个类别,则接口部分代码如下 <p style="margin-top: 0px; margin-bottom: 0px; font-family:

OC的类别(分类)和拓展

一.分类: 1.适用范围 当你已经封装好了一个类(也可能是系统类.第三方库),不想在改动这个类了,可是随着程序功能的增加需要在类中增加一个方法,这时我们不必修改主类,只需要给你原来的类增加一个分类. 将一个大型的类拆分成不同的分类,在不同分类中实现类别声明的方法,这样可以将一个类的实现写到多个.m文件中,方便管理和协同开发. 分类中的方法可以只声明,不实现,所以在协议不支持可选方法的时候(协议现在已经支持可选方法),通常把分类作为非正式协议使用. 2.语法格式 文件中的语法: 1 @interf

OC语言--继承、点语法、类别

1 继承 1.0 面向对象的三个基本特征:1.封装2.继承3.多态 1.1 生活中的继承 ->继承的生活逻辑 a.继承遗产:预先给予,不需要自行再建 b.      人类         父类 男人和女人       子类 乔布斯 和章子怡     对象 ->继承的概念:继承(也被称为派生). 父类拥有的属性和方法,子类直接获得,这个过程叫做继承. 子类在父类基础上,衍生出了自己独有的属性和方法,称为派生. ->父子类的各种称呼: 父类   parentClass    超类 suppe

OC中的类别Category-协议Protocol-… - 韩俊强的博客 - 博客频道 - CSDN.NET

OC中的类别Category-协议Protocol- 类别(category)--通过使用类别,我们可以动态地为现有的类添加新方法,而且可以将类定义模块化地分不到多个相关文件中.通常只在类别中定义方法. 类别,接口部分的定义,通常该文件命名为已有"类+类别名.h" @interface 已有类 (类别名) //.......方法实现 @end #import #import "Buy.h" @interface Person : NSObject <<s

OC中SEL,类别,继承,协议的使用

1.SEL SEL是selector的缩写,selector在OC中作用是定义一个方法变量,通过该方法变量来调用方法.我们在后面的UI中会经常用selector来调用事件方法.下面我将举两个例子来说明SEL的使用. 直接通过方法名来调用,我们先新建一个Student类,并在其中定义一个名叫Test的对象方法.并定义一个输出语句: -(void)test { NSLog(@"这是SEL的测试方法"); } 我们在Main方法中通过SEL调用就会输出以上结果,如下: SEL s = @se

OC基础回想(十一)类别

在编写面向对象的程序时,常常要为现有的类加入一些新的行为,通常採用创建子类的方法. 只是有时候子类不方便.比方,想为NSString类加入一个新的行为,可是NSString实际上仅仅是一个类簇的表面形式,因而为这种类创建子类会很困难. 利用Objective-C的动态执行时机制,能够使用类别(category)来为现有的类加入新方法. 1.创建类别 通常类别代码放在独立的文件里,以"类名称+类别名称"的风格命名. 1.1開始创建 打开项目,在导航栏中选择你想让文件出现的群组.选择Fil

Snail—OC学习之类别Category

类别就是向类添加一些有用的功能或者方法 利于开发 类可以是系统类.可以是自定义类 类别跟子类是不一样的,类别只能添加一些方法 属性变量什么的不可以添加 不创建新类,即可对已有类进行扩展 做项目的时候 跟其他程序员会更好的合作 新建类别的图放在最后面 我们为系统类NSArray添加一个打印方法 使得能输出中文 界面如下 然后再NSArray+MyNSLog.h中声明一个函数 #import <Foundation/Foundation.h> @interface NSArray (MyNSLog

OC Categroy类别

Categroy类别,又称为扩展类,在类的原基础上扩展方法,且不可添加变量,如果扩展的方法与原始类中的方法相同,则会隐藏原始方法,且不可在扩展方法中通过super调用原始方法,这里与继承不同. 定义: 下面演示在人的基础扩展为学生 定义类 Person.h #import <Foundation/Foundation.h> @interface Person : NSObject @property(retain) NSString *name; @property(nonatomic,ass