刚接触Object-C哪会儿,因为名字里带着个“C”以及类名中的“*.h”、“.m”习惯,老觉得Object-C就是一个很古老的东西,不会支持接口,多态之类的特性。其实别人早就提供了,名字不一样而已。不要带着偏见去看待事物,恩恩!
在Object-C中,提供了一种动态扩展类的方式——Category,它可以动态的为已存在的类添加新的方法,有点类似于Ruby的打开类技术,不同的是Category必须为扩展创建一个新类,新类的名称一般约定为“原类名称+扩展名”。有了这个技术之后,开发者在写代码时就可以从把原始的类设计得非常小,然后在功能增加时再逐步扩展,另外,可以很容易的把新添加的行为模块化。
Category的实现和使用方式非常简单,比方说,在写UI的时候,想使用自己的字体类型和字体大小,这个时候就可以尝试使用Category扩展UIFont支持自己想用的字体和字体大小。首先创建一个Category新类,(UIFont+SnapAdditions.h)
#import <UIKit/UIKit.h>
@interface UIFont (SnapAdditions)
+(id)xnl_snapFontWithSize:(CGFloat)size;
@end
#import "UIFont+SnapAdditions.h"
@implementation UIFont (SnapAdditions)
+(id)xnl_snapFontWithSize:(CGFloat)size
{
return [UIFont fontWithName:@"Action Man" size:size];
}
@end
创建好之后,在想使用该方法的类中引入Category类,然后像使用UIFont自身的方法一样使用新的方法就行了。
#import "UIFont+SnapAdditions.h"
…
self.statusLabel.font = [UIFont xnl_snapFontWithSize:16.0f];
...
应用场景:
- 想为已有类(自己创建的或者SDK类库)扩展新的方法。
- 多个团队协作时,需要对同一个类进行修改,可以有效隔离相互影响。
注意事项:
- 新创建的Category类不能拥有自己的变量,需要自己的变量可通过继承实现。
- 新创建的Category类会覆盖同名的原类的方法,因此给新方法命名的时候最后特殊一点,避免覆盖原类方法,导致不可预知的错误。
- 新创建的Category类虽然也有“.h”和“.m”文件,但是实现类并不需要实现所有的接口方法,只要不去调用方法就不会有问题。
分享到:
相关推荐
Object-C语言基础: 学习Object-C语言的基本语法和特性,了解Objective-C编程范式和iOS开发规范。 列表选择功能实现: 掌握实现iOS应用中列表选择功能的方法和技巧,包括列表的展示、数据的加载和选择状态的管理等...
Object-C语言教程 Object-C语言教程 Object-C语言教程 Object-C语言教程
这篇文章为您呈现了一份详尽的Object-C语言学习资源概览,旨在帮助初学者和经验丰富的开发者系统地学习Object-C编程,并通过实践案例和项目资源提升实际编程能力。 文章首先聚焦于Object-C语言教程,这是学习Object...
Object-Oriented Programming with Object-C Object-C 进阶书籍---面向对象
3. Object-C中的布尔类型 4. Object-C中的null 5. 与C混合编写 6. 对象的初始化 7. Object-C的description方法 8. Object-C的异常处理 9. id类型 10. 类的继承 11. 动态判定与选择器 12. 类别Category 13....
Object-C语言教程:Objective-C 简介
object-c基础教程object-c基础教程object-c基础教程
Object-C语言是一种面向对象的程序设计语言,常用于iOS和macOS应用程序的开发。在iOS开发中,经常需要将JSON数据转换为模型对象,以便更方便地处理数据。为了简化这一过程,开发者可以使用开源库"MJExtension"来实现...
Object-C_在iOS上使用Object-C进行RSA算法的加密+解密实现
Object-C语言教程0220.zipObject-C语言教程0220.zipObject-C语言教程0220.zipObject-C语言教程0220.zipObject-C语言教程0220.zipObject-C语言教程0220.zipObject-C语言教程0220.zip
Object-C语言实现列表选择项目源码.zipObject-C语言实现列表选择项目源码.zipObject-C语言实现列表选择项目源码.zip
Object-C期末复习资料,包含多道题目助力期末复习,成功考试过关
从Object-C的介绍和特点开始,逐步介绍了如何学习Object-C、Object-C的实际应用场景,以及Object-C的高级特性,如内存管理、多线程编程、设计模式和现代实践。此外,博客还提供了学习资源和进阶建议,并强调了加入...
EventBusObject-CVersion(EventBus的Object-C语言版本)
【Object-C】object-c入门基础 object-c入门基础 说明:object-c入门基础 object-c入门基础 (Object-c Start Basics) 文件列表: object-c入门基础.doc (27648, 2014-10-29) 【Object-C】object-c入门基础 object-c...
Object-C语言,用C语言实现面向对象
一款用Object-C语言编写的视频播放器框架