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文件中声明
.m文件中实现
调用
输出结果
二、Extension(扩展、延展)
1、Extension都是放在.m文件中@implementation的上方,因为Extension中如果有声明方法必须在@implementation中实现,否则编译会报错。
2、区别
( 1 ) 可以添加实例变量,Category 不可以
( 2 ) 添加方法,Extension 除了声明,还必须是实现。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声明不一定要实现。
相关文章推荐
- 解决iOS手势冲突问题
- iOS手势冲突问题
- iOS开发-Block
- 【简易版】IOS仿periscope自制狂赞飘桃心
- iOS推送证书从申请到使用
- iOS边练边学--static(作用域),copy(深浅拷贝)
- iOS安全–使用static inline方式编译函数,防止静态分析
- iOS推送本地通知 Push Notifications: local part
- 中文 iOS/Mac 开发博客列表
- iOS边练边学--级联菜单的两种实现方法
- IOS开发之----资源汇总
- iOS开发-归档
- iOS Responder Chain 响应者链
- iOS开发-时间日期NSDate
- iOS开发小技巧--父子控制器练习中get到的技能,控制核心动画的范围
- iOS开发-FMDB
- iOS边练边学--父子控制器之自定义控制器的切换
- iOS Coding Standards
- iOS制作 转盘EaseInEaseOut旋转动画
- iOS 检测字符串输入是否为合法数字