Obiect-C之Category(类的拓展)
来源:互联网 发布:video.js ie8 编辑:程序博客网 时间:2024/06/13 21:31
在项目进行的时候,一个类已经被设计完成,但是可能因为某些小的功能需求,或者改动可能需要改动源码,如何能在不改动自己写或者是其他人写的源码来添加新的功能?当然继承是一个非常不错的方法,还有一个在Object-C中提供了一种方式来拓展该类(Category),使用该方法可以给它动态的添加业务需求,不需要改变源码,也不需要创建子类,非常方便!
下面看看category的简单实现方式:
现在我们有一个类叫Student类,该类有一个学习的方法:
@interface Student : NSObject
-(void)study;
@end
然后在实现文件中实现该类的study方法:
@implementation Student
-(void)study{
NSlog(@"该学生正在学习,请勿打扰!");
}
@end
现在,假设我们的student已经被设计好了,但是突然需要让该学生具备一个吃饭的行为,那这个时候怎么办呢?我们可以在新建两个文件,分别 是Student+HelloWorld.h 和 Student+HelloWorld.m(这个实现文件格式就是如此)
当然也可以使用xcode工具给我们自己生成这两个文件,按Command+N,新建文件,选择Objective-C category方式创建类,这样Xcode会自动帮 你创建约定命名方式的文件,具体看图:
这里和平时新建类的时候不同,这里需要选择Object-C catrgory 。然后next
注意,这里在Category on这里选择你要拓展的那个类,这里是Student类。点击next就ok了。
首先,新建好 的文件中看.h文件代码实现
@interface Student (HelloWorld)
-(void)eat;//需要拓展的吃饭方法
@end
@implementation Student (HelloWorld)
-(void) eat{
NSlog(@"这个是拓展学生吃饭的方法!");
}
@end
最后在main函数中调用看看是否拓展方法成功:
Student *stu = [[[Student alloc]init]autorelease];
[stu study];
[myclass eat];
打印的结果为:
该学生正在学习,请勿打扰!
这个是拓展学生吃饭的方法!
总结:category这个方式比起继承更好管理代码和维护,随时可以在不改动源码的情况下更改添加业务方法。
- Obiect-C之Category(类的拓展)
- Obiect
- 类的拓展——分类(Category)
- swift之给拓展Category增加属性
- Objective-C语法之Category的使用
- Objective-C语法之Category的使用
- Objective-C语法之Category的使用
- Objective-C语法之Category的使用
- Objective-C语法之Category的使用
- Objective-C语法之Category的使用
- Objective-C语法之Category的使用
- 【iOS】Objective-C之Category的使用
- Objective-C语法之Category的使用
- Objective-C语法之Category的使用
- Objective-C语法之Category的使用
- Objective-C之category
- Objective-C之Category
- Objective-C之Category
- EGL教程汇总
- android崩溃重启
- Linq 的Join多条件
- ExecutorService和Executors
- JS 控制文本空输入文字个数相关。
- Obiect-C之Category(类的拓展)
- java工作流
- 自绘按钮的实现过程
- 微软警告:非法SSL证书或引发“钓鱼”攻击
- joomla component学习笔记(三)--第一个组件helloworld研究
- iOS-获取UIView的所有层级结构
- 使用tomcat管理mina
- tomcat启动出现问题
- android 自定义组合控件