黑马程序员---OC学习笔记之分类(Category)延展
来源:互联网 发布:java程序员的发展 编辑:程序博客网 时间:2024/06/04 19:39
------Java培训、Android培训、iOS培训、.Net培训--------
1、类的延展的概念
延展类别又称为【扩展Extendsion】
是Category的一个特例
其名字为匿名(空)
例如
@interface MyClass(){//扩展float value;}
这种写法的类别叫做【匿名类别】,又叫类扩展,所谓的扩展,其实就是一个类添加额外的成员变量,方法或者合成属性
2、延展的实现
【可以在延展中,定义实例变量】
【不能使用@implementation类名()去实现类别的方法,要直接写在类的实现中】
例如:
【Person.h文件内容】
@interface Person : NSObject @end
【Person_age.h文件内容】这个事延展头文件
#import "Person.h" //分类扩展@interface Person(){ int _age;}@property(nonatomic,assign) int age; -(void)printAge;
@end
【Person.m文件内容】
#import "Person.h"#import "Person_age.h"int main(int argc, const char * argv[]){ @autoreleasepool { Person *p = [Person new]; p.age = 22; [p printAge]; } return 0;}
打印结果;
2015-10-07 11:44:17.014分类扩展[923:303] age = 22
3、延展类可以定义私有方法
【在.m文件中使用延展】
例如:
@interface Person(){ float _weight;//定义私有成员变量}@property(nonatomic,assign) float weight;//定义相对私有方法-(void)printWeight;@end @implementation Person//分类延展方法在原类的实现区实现-(void)printAge{ NSLog(@"age = %d",self.age);} //实现私有方法,该方法只能在该文件中使用-(void)printWeight{ NSLog(@"age =%.2f",self.weight);}@end
4.类别与类扩展的区别
1)类别只能增加方法
2)类扩展不仅可以增加方法,还可以增加实例变量(或者合成属性),只是该实例变量默认类型是私有的(作用范围只能在自身类,而不是子类或其他地方)
3)类扩展中声明的方法没有被实现,编译器会报警,但是【类别】中的方法没有被实现时编译器是不会有任何警告的,这是因为【类扩展】是在编译阶段被添加到类中的,而类别是在运行时添加到类中的
4)类扩展不能像类别那样拥有独立的【实现部分@implementation部分】,也就是说,【类扩展】所声明的方法必须依托对应类的实现部分来实现
5)定义在.m文件中的类扩展方法为私有的,定义在.h文件中的类扩展方法是共有的,【类扩展】是在.m文件中声明私有方法的非常好的方式
0 0
- 黑马程序员---OC学习笔记之分类(Category)延展
- 【黑马程序员】OC-分类(Category)及延展(Extendsion)
- 黑马程序员---OC学习笔记之分类(Category)非正式协议【重点】
- 黑马程序员——OC基础---分类(Category)、非正式协议及分类延展
- 黑马程序员----OC学习笔记之category,extension,protocol
- 黑马程序员---OC分类-category
- 黑马程序员 oc随机 分类与延展
- 黑马程序员-IOS基础之OC分类(Category)
- 黑马程序员——OC学习之分类category的使用
- OC Category 分类 Extension 延展.md
- 黑马程序员——ios开发基础之OC中的分类、协议、延展和代理
- 黑马程序员--IOS学习笔记(类和分类category)
- 【OC笔记】分类和延展
- OC语言学习 (五) Category分类 和 类的延展Extension
- 黑马程序员------Category:分类
- [黑马程序员][OC]分类(Category)的使用
- 黑马程序员---OC基础---Block、分类Category、协议protocol
- 黑马程序员 - OC语言 - 【考点】分类(Category)使用注意事项
- 更换linux自带openJDK
- TCP的三次握手(建立连接)和四次挥手(关闭连接)
- LeetCode 题解(259) : Walls and Gates
- java学习之路,方法重写
- tftp在linux下的使用
- 黑马程序员---OC学习笔记之分类(Category)延展
- 在Windows8.1下面装Ubuntu14.04
- android项目文件介绍
- php运行环境与测试环境的搭建
- nyoj 小明组织活动的任务 59
- firefox调试js时发现js的中文显示乱码
- 图像处理词汇总结
- centos 6.5 安装配置R问题记录
- IE下 js文件上传时拒绝访问问题