类目和延展扩展系统类
来源:互联网 发布:js中的if内循环判断 编辑:程序博客网 时间:2024/05/13 09:33
类目就是为已存在的类添加新的方法。但是不能添加实例变量。比如系统的类,我们看不到他的.m文件,所以没有办法用直接添加方法的方式去实现。
以下是通过给UIButton添加方法实现对UIButton添加方法实现对UIButton扩展:
@interface UIButton (CategoryButton)+(id)initWithFrame:(CGRect)frame title:(NSString*)title state:(UIControlState)state titleColor:(UIColor*)titleColor target:(id)target action:(SEL)action event:(UIControlEvents)event type:(UIButtonType)type;//+(id)@end
以上声明一个简单的初始化方法,以下是实现方法:
#import "UIButton+CategoryButton.h"@implementation UIButton (CategoryButton)+(id)initWithFrame:(CGRect)frame title:(NSString *)title state:(UIControlState)state titleColor:(UIColor *)titleColor target:(id)target action:(SEL)action event:(UIControlEvents)event type:(UIButtonType)type{ UIButton* button = [UIButton buttonWithType:type]; button.frame = frame; [button setTitle:title forState:state]; [button setTitleColor:titleColor forState:state]; [button addTarget:target action:action forControlEvents:event]; return button;}@end
Category的使用场景有那些呢:
1、类包含了很多个方法实现,而这些方法需要不同团队的成员来实现
2、当你在使用基础类库中的类时,你不想继承这些类而只想添加一些方法时。
Category能实现上面的需求,当然也有使用Category是需要注意的问题:
1、Category可以访问原始类的实例变量,但不能添加实例变量,如果想添加变量,那就通过继承创建子类来实现。
2、Category可以重载原始类的方法,不大不推荐这么做,这样会覆盖掉原始类的方法。如果确实要重载,那就通过继承创建子类来实现。
3、和普通接口有所区别的是,在Category的实现文件中的实例方法只要你不去调用它你可以不用实现所有声明的所有方法。
延展:
延展的作用就是定义自己的私有方法。
形式和类目相同,不用新创建文件,只是把类目的interface地方的文件放在了你需要扩展的类的.m文件里边。
#import "Student.h"
@interface Student (extension)//为Student类创建一个私有的方法text
-(void)text;
@end
@implementation Student
-(void)hello;
{
[self text];
}
-(void)text
{
NSLog(@"你好");
}
@end
好了,延展和类目基本就这些内容。下节讲,继承,延展和类目 一起使用做一个界面 @interface Student (extension)//为Student类创建一个私有的方法text
-(void)text;
@end
@implementation Student
-(void)hello;
{
[self text];
}
-(void)text
{
NSLog(@"你好");
}
@end
0 0
- 类目和延展扩展系统类
- 类的扩展(二):类目、延展、协议和代理
- 类的扩展: 继承, 类目, 延展, 协议
- OC_类的扩展(类目,延展)
- 类目 延展 和 协议
- 类目和延展
- 类目,延展和协议
- 延展和类目
- 类目和延展
- OC_09_01 类目和延展
- ios 开发 OC编程 类的扩展 协议 延展和 类目
- OC学习:类目和延展
- iOS类目、延展和协议
- 类目 延展
- 类目和延展的作用和区别?
- OC - 第七章 类的扩展: 类目Category, 延展Extension, 协议Protocol ( 一 )
- OC - 第七章 类的扩展: 类目Category, 延展Extension, 协议Protocol ( 二 )
- Objective-C中的类目和延展
- linux route命令使用
- linux中java服务的启动与停止脚本
- Solr的检索运算符
- javascript数组元素的添加、删除与插入以及参数数组的使用
- malloc动态申请内存空间对程序效率的影响
- 类目和延展扩展系统类
- win32编程 自己写窗口
- 自定义ios7标题栏和状态栏
- DPM(Defomatble Parts Model)原理
- 最常用的Notepad++的快捷键
- Oracle With 子句
- 一堆C++人找不出内存泄露
- linux下发送广播
- 不入虎穴,焉得虎子