Category、Extension

Category,分类,类目。主要作?用是为没有源代码的添加方法,例系统自带的NSString。

通过Category添加的方法会成为原类的一部分。从?而达到扩展一 个类的功能。

 

Category

NSString+SayHi.h文件

 @interface NSString (SayHi)

- (void)hi; 

@end

/*
 分类的作用:在不改变原来类内容的基础上,可以为类增加一些方法
 
 使用注意:
 1.分类只能增加方法,不能增加成员变量
 2.分类方法实现中可以访问原来类中声明的成员变量
 3.分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法再使用(对于非系统方法)
 4.方法调用的优先级:分类(最后参与编译的分类优先) --> 原来类  --> 父类
 */

类目:针对系统创建类

subclass 子类

 

 

扩展:

Extension管理私有方法,是类目一种,可以扩充属性,但类目只能添加方法。

延展中的私有方法属性无法在主函数中调用,主要供程序员知道哪些方法属性私有的。(针对自定义的类)

时间: 2024-12-20 04:09:05

Category、Extension的相关文章

Objective -C NSDate、Category   、Extension、Protocol

NSDate的使用 NSDate是Cocoa中用于处理日期和时间的基础类,封装类某一给定的时刻,具体的日期,时间和时区 使用+date方法获取当前日期和时间 例如  :NSDate*nowDate = [NSDate date]: 注意,,NSLog(@"%@",nowDate): 无论你是哪个时区的时间,打印时间,打印时总是打印对应的0时区时间 NSTimeinterval NSTimeInterval(即double类型) 用以表示以秒为单位的时间间隔 可以使用-initWithT

Objective-C:分类(Category、extension)

分类(Category .Extension) (一)分类的划分 (2) 1.(命名的类别)类别Category:只能添加新的方法,不能添加新变量. 2.(未命名的类别)类的扩展Extension://扩展一般直接写在类的实现文件中     //扩展中定义的都是类中私有的实例变量和方法 (二)分类的使用 (1)分类只能增加方法(包括类方法和对象方法),不能增加成员变量 (2)在分类方法的实现中可以访问原来类中的成员变量: (3)分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原来的

Delegate、Category、Extension

Delegate 是把一个类自己需要做的一部分事情,让另一个类(也可以就是自己本身)来完成. delegate的方法在被委托的类中必须实现. 设计模式中的委托模式. Category 即使在你不知道一个类的源码情况下,向这个类添加扩展的方法. 通过在interface中声明一个额外的方法并且在implementation 中定义相同名字的方法即可,不必实现.分类的名字(括号括起来)表示的是:对于声明于其他地方的这个类,在此处添加的方法是额外的,而不是表示这是一个新的类.你不可以通过分类为一个类添

IOS阶段学习第16天笔记(Category、NSSet、NSIndexSet的操作)

IOS学习(OC语言)知识点整理 一.NSSet.NSMutableSet集合的介绍 1)NSSet.NSMutableSet集合,元素是无序的,不能有重复的值. 2)用实例方法创建一个不可变集合对象 例如: //宏定义 #define TOBJ(n) [NSNumber numberWithInt:n] NSSet *set1=[[NSSet alloc]initWithObjects:TOBJ(2),TOBJ(3),TOBJ(3),TOBJ(1),TOBJ(5), nil]; 2)用类方法创

Category和Extension

转: http://blog.csdn.net/leikezhu1981/article/details/19091049 一.概述 类别是一种为现有的类添加新方法的方式. 利用Objective-C的动态运行时分配机制,Category提供了一种比继承(inheritance)更为简洁的方法来对class进行扩展,无需创建对象类的子类就能为现有的类添加新方法,可以为任何已经存在的class添加方法,包括那些没有源代码的类(如某些框架类). 二.示例 1.声明类别 @interface NSSt

ios中的category与extension

ios中的category与extension Objective-c中提供了可以让我们扩展类定义的手段:类目,延展和协议. 类目:为已知的类增加新的方法: 延展:通知在本类的定义里使用类目来声明私有方法,和实例变量: 协议:协议声明了可以被任何类实现的方法.注意:这些手段只能增加类的方法,并不能用于增加实例变量(延展除外),要增加类的实例变量,只能通过定义子类来间接实现.1.类目1)声明类目@interface NSString (NumberConvenience)-(NSNumber *)

iOS学习笔记06—Category和Extension

iOS学习笔记06—Category和Extension 一.概述 类别是一种为现有的类添加新方法的方式. 利用Objective-C的动态运行时分配机制,Category提供了一种比继承(inheritance)更为简洁的方法来对class进行扩展,无需创建对象类的子类就能为现有的类添加新方法,可以为任何已经存在的class添加方法,包括那些没有源代码的类(如某些框架类). 二.示例 1.声明类别 @interface NSString (CategoryDemo) -(NSNumber*)

category 和 extension区别

1.Category和Extension都是用来给已定义的类增加新的内容的. 2.Category和原有类的耦合更低一些,声明和实现都可以写在单独的文件里.但是只能为已定义类增加Method,而不能加入成员变量. 3.Extension耦合比较高,声明可以单独写,但是实现必须写在原有类的@implementation中.可以增加Method和成员变量. 下面这里是翻译的objective-c-primer.pdf 中的相关资料,可以对这两个概念有一个初步了解. 理解了Category,Exten

类目 (category),扩展(Extension)和协议(protocol) (转)

@类目-分类(category) 1.类目: 类目(也成类别:Category)是一种为现有类添加新方法的方式2.类目的局限性:1)类目无法向已有的类中添加实例变量: 2)如果类目中的方法和已有类中的方法名称冲突时,类目中的方法优先级高,发生这种情况,则已有类的原始方法永无天日,最好的办法是将自己扩展的方法和原始方法区分开来. 3.类目的作用:?       将类的实现分散到多个不同的文件中–      将多个类目的声明放入同一个.h文件中–      将实现放入多个.m方法中?       使