OC学习篇之-----类目·延展·协议之--类目
来源:互联网 发布:linux nano vim 编辑:程序博客网 时间:2024/06/11 08:07
本篇为:类目
以下是个人理解中的类目延展协议:
类目:为本类添加新的方法,例如为NSObject类,继承后自雷同样继承父类的类目中的方法
协议:声明了可以被任何类实现的方法(本身不实现,遵守此协议的类去实现)
延展:为本类添加私有方法,延展的方法只供本类使用
注意:类目和延展都是不可以添加类的实例变量,若必须添加,应该用继承来达到目的(不推荐代码中的添加属性,然后通过重写设置器达到目的)
类目:
1.1.为已知的类添加新的方法
1.2不可添加成员变量
1.3可以被子类继承
2.1.可以在本文件中创建,类目的声明文件需要在已知的类的声明文件中的文件头中,类目的实现文件需要在已知的类的实现文件中的头文件中
2.2.格式:声明文件:@interface 类名 (类目名);
实现文件:@implementation 类名 (类目名);
2.3也可以新创文件,格式与上面一样;
2.4类目中声明的方法可以不在本类中实现,可以在子类中再实现:如下:
NSObject的类目.h文件
#import <Foundation/Foundation.h>//给NSObject添加一个类目,即非正式协议@interface NSObject (NSObject_Category)-(void)test1;-(void)test2;@end
NSObject的类目.m文件
#import "NSObject+NSObject_Category.h"@implementation NSObject (NSObject_Category)//这里可以不实现,可以在继承了这个类的子类中实现这两个方法//-(void)test1{// NSLog(@"i ma test1");//}//////-(void)test2{// NSLog(@"i ma test2");//}@end
以下是继承了NSObject类的子类的.h文件
#import <Foundation/Foundation.h>#import "NSObject+NSObject_Category.h"@interface MyCalss : NSObject@end
以下是继承了NSObject类的子类的.m文件
父类中类目的方法可以再子类中实现
@implementation MyCalss-(void)test1{ NSLog(@"i ma test1,父类中我不实现,我实在子类中实现的");}-(void)test2{ NSLog(@"i ma test2,父类中我不实现,我实在子类中实现的");}@end
总结:个人感觉类目也是非常强大的,例如一些OC自身的类,当我们需要用到OC的类的时候,但是里面并没有我们要的方法的时候,我们就可以通过给这类一个类目,然后声明实现我们需要的方法就可以了
0 0
- OC学习篇之-----类目·延展·协议之--类目
- OC学习篇之-----类目·延展·协议之--延展
- OC学习总结之延展类目协议
- OC学习篇之-----类目·延展·协议之--协议
- OC学习心得之延展类目协议
- OC-类目延展协议
- OC之类目、延展、协议、代理(笔记…
- OC学习:协议、类目和延展
- OC学习 第十章 类目延展协议
- 类目、延展、协议学习
- OC中类目,延展,协议
- OC 08 类目延展协议
- IOS开发之类目,延展,协议
- 初识Objecive-C 之 类目、延展、协议
- ios之类目/延展/协议作用
- iOS开发之 类目,延展,协议
- OC学习:类目和延展
- IOS学习笔记之类目和延展
- H264的I/P/B帧类型判断
- swift ios转场动画详解
- 网络爬虫——爬取糗事百科笑料段子
- 创建实例失败 state error
- 设计模式之适配器
- OC学习篇之-----类目·延展·协议之--类目
- ResourceBundle
- oracle 日期函数 MONTHS_BETWEEN
- 解决UICollectionView的cell间距与设置不符问题
- 成功的背后!(给所有IT人)
- AJAX-requestBody-提交JSON
- Spark处理Json格式数据(Python)
- tomcat独立使用正常,但是在eclipse里却不能调用tomcat
- 自定义Application的标准写法