您的位置:首页 > 移动开发 > IOS开发

ios Category和Extension

2016-04-17 17:48 218 查看
一、Category(类别)

1、介绍

利用Objective-C的动态运行时分配机制,Category提供了一种比继承(inheritance)更为简洁的方法来对class进行扩展,无需创建对象类的子类就能为现有的类添加新方法,可以为任何已经存在的class添加方法,包括那些没有源代码的类。

2、局限

( 1 ) 无法添加实例变量

( 2)同名方法,类别的优先级高

3、作用

( 1 ) 将类是实现分散到多个文件,方便代码管理

( 2 ) 向对象添加非正式协议 : 创建一个NSObject的类别称为“创建一个非正式协议”,因为可以作为任何类的委托对象使用。

4、例子



.h文件中声明

//覆盖 原有方法
- (NSString *)substringFromIndex:(NSUInteger)from;


.m文件中实现

- (NSString *)substringFromIndex:(NSUInteger)from
{

return @"hello word";

}


调用

NSLog(@"%@",[@"12dnwiiengn" substringFromIndex:2]);


输出结果

2016-04-17 17:35:37.784 CategoryAndExtension[20027:270856] hello word


二、Extension(扩展、延展)

1、Extension都是放在.m文件中@implementation的上方,因为Extension中如果有声明方法必须在@implementation中实现,否则编译会报错。

2、区别

( 1 ) 可以添加实例变量,Category 不可以

( 2 ) 添加方法,Extension 除了声明,还必须是实现。Category声明不一定要实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: