【Object-C】类别与扩展Category

Object-C 的动态特征允许使用类别为现有的类添加新方法,并且不需要创建子类,不需要访问原有类的源代码。

通过使用类别,可以动态的为现有的类添加新方法,而且可以将类定义模块化的分布到多个相关文件中。

point:

1、定义类名必须是该项目中没有的类,而定义类别时使用的类名必须是已有的类

2、定义类别时必须使用()来包含类别名

3、类别中通常只定义类方法和实例方法,不能添加实例变量(可以通过扩展extension添加)

4、不要重载另外的方法,导致原方法不可用

5、根据需要可以有多个分类,分类会影响子类

6、通过类别为指定类添加新的方法后,这个新的方法能够影响指定类的子类,子类

也可以继承到这个新的方法。

7、使用类别来调用私有方法

8、使用类别来实现非正式协议

9、可以利用类别对类进行模块化设计

@interface  已有类  (分类名)

-实例方法

+类方法

@end

扩展

@interface 已有类 ()

{

实例变量;

}

-类方法;

+实例方法;

@end

时间: 2024-10-09 19:31:29

【Object-C】类别与扩展Category的相关文章

objective-c中Category类别(扩展类)专题总结

objective-c中Category 类别.扩展 专题总结 http://blog.csdn.net/jiajiayouba/article/details/21105873 分类: IOS 2014-03-12 18:19 1293人阅读 评论(0) 收藏 举报 类别扩展 objective-c中Category类别(扩展类)专题总结 objective-c类别的作用? 通过类别的方式,可以将类的实现分散到不同的文件里. haoxue 2011-11-19 14:03 类别 类别是一种为现

ios 中Category类别(扩展类)专题总结

原创地址   http://www.code4blog.com/archives/294 类别 类别是一种为现有的类添加新方法的方式. 利用Objective-C的动态运行时分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别catagory,他可以为任何类添加新的方法,包括那些没有源代码的类. 类别使得无需创建对象类的子类就能完成同样的工作 一.创建类别 1.声明类别 声明类别与声明类的形式很相似 @interface  NSString(NumberConvenienc

[ios]objective-c中Category类别(扩展类)专题总结

本文转载至 http://yul100887.blog.163.com/blog/static/20033613520126333344127/ objective-c类别的作用?通过类别的方式,可以将类的实现分散到不同的文件里. 类别类别是一种为现有的类添加新方法的方式.利用Objective-C的动态运行时分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别catagory,他可以为任何类添加新的方法,包括那些没有源代码的类.类别使得无需创建对象类的子类就能完成同样的工

类别和扩展

类别 使用类别可以扩展类的功能,不管该类的源码是否存在都可以扩展,和继承的最大不同就是类别中的方法可以访问被扩展类的私有元素. 类别的命名通常使用"类+类别名"的形式,如 Person+PersonLife.h 类可以有多个类别. 类别会覆盖方法,如果类的方法和类别的方法冲突,则会调用类别的方法 类别可以访问私有元素,继承并不可以. 类别不能定义属性 类别的定义如下 #import "Person.h" @interface Person(PersonLife) @

iOS开发之类别、扩展

类别: 在ios项目开发中允许使用类别为现有的类添加新的方法,并不需要创建子类.通过类别我们可以动态地为现有的类添加新的方法,可以将类的定义模块化地布局到多个相关文件中. 使用类别的好处为: 一.进行模块化设计 二.利用类别来调用私有方法 接口部分格式如下: @interface 已有类 (类别名) //方法的定义 ..... @end 注意:类别中通常只定义新的方法. 类别的实现部分的语法格式如下: @implmentation 已有类(类别名) //方法的实现 @end 我先创建一个old类

类别的扩展

类别的扩展 续 利用类别分散实现代码 在大型的项目中,一个类的实现可能很大,而且 .m 文件不能分离.可是使用类别能够将一个类的实现分散且有规律的组织在不同的文件里.还能够将一个类的实现分散到不同的框架中. 编程人员能够更加easy阅读代码并实现多人合作编码 版本号管理减少冲突 维护人员跟easy理解代码 在代码的头文件里,假如有例如以下这么多的成员变量,也就须要对应的 setter, 和 getter 方法 #import <Foundation/Foundation.h> @interfa

Objective-C - 分类(类别)的应用 Category

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

IOS 类别与扩展的区别 (category &amp; extensions)

类别 .h @interface NSString(XXXXXX) -(NSInteger)getLen; @end .m @implementation NSString(XXXXXX) -(NSInteger)getLen { return 0; } @end //////////////////////////////////////////////////////////////////////////////////////////////////// 扩展 .h @interface

ios 中Category类别(扩展类)小结

类别 类别是一种为现有的类添加新方法的方式.利用Objective-C的动态运行时分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别catagory,他可以为任何类添加新的方法,包括那些没有源代码的类.类别使得无需创建对象类的子类就能完成同样的工作一.创建类别1.声明类别声明类别与声明类的形式很相似 @interface  NSString(NumberConvenience)-(NSNumber *)lengthAsNumber;@end//NumberConvenie