9.类的延展
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9.类的延展相关的知识,希望对你有一定的参考价值。
Category的作用
Category:也叫分类,类目。是为没有源代码的类扩充功能
扩充的功能会成为原有类的一部分,可以通过原有类或者原有类的对象直接调用,并且可继承。
但是该方式只能扩充方法,不能扩充实例变量
类名的文件名为原类名+文件名
如:
![技术分享](https://image.cha138.com/20200614/e695b19e0d6f45c2bc5bc39743dfb04e.jpg)
创建步骤:
![技术分享](https://image.cha138.com/20200614/60ea3132022248ec8bcc9f0c1c4ae786.jpg)
File:文件名
File Type:文件的类型
Class:文件扩展类型
![技术分享](https://image.cha138.com/20200614/3ca7adf598c24600901c2db8e6a6fa20.jpg)
创建好之后,会自动创建.h文件和.m文件。
在.h文件中声明添加的方法,在.m文件中实现方法
Extension
为了能够获得源代码的类添加私有的实例变量和方法
语法格式:
Extension的语法格式和Category很相似,相当于把Category 的.h?件挪到了原始类的.m?件中。
![技术分享](https://image.cha138.com/20200614/991152d6ee37447a861cb9888a34635b.jpg)
通过延展定义的方法属于私有方法,外界是没有访问权限的,只能在当前类的.m文件中访问。
协议:一堆方法的声明,只有.h文件,协议的定义以@protocol开始,以@end结束
![技术分享](https://image.cha138.com/20200614/14021773086a4e9a9b0beb03cf5c4e18.jpg)
执行协议的类要接收协议,写在NSObject后面的<>内部
![技术分享](https://image.cha138.com/20200614/985bab57682b458b9b92971548147511.jpg)
扩充的功能会成为原有类的一部分,可以通过原有类或者原有类的对象直接调用,并且可继承。
但是该方式只能扩充方法,不能扩充实例变量
类名的文件名为原类名+文件名
如:
![技术分享](https://image.cha138.com/20200614/e695b19e0d6f45c2bc5bc39743dfb04e.jpg)
创建步骤:
![技术分享](https://image.cha138.com/20200614/60ea3132022248ec8bcc9f0c1c4ae786.jpg)
File:文件名
File Type:文件的类型
Class:文件扩展类型
![技术分享](https://image.cha138.com/20200614/3ca7adf598c24600901c2db8e6a6fa20.jpg)
创建好之后,会自动创建.h文件和.m文件。
在.h文件中声明添加的方法,在.m文件中实现方法
Extension
为了能够获得源代码的类添加私有的实例变量和方法
语法格式:
Extension的语法格式和Category很相似,相当于把Category 的.h?件挪到了原始类的.m?件中。
![技术分享](https://image.cha138.com/20200614/991152d6ee37447a861cb9888a34635b.jpg)
通过延展定义的方法属于私有方法,外界是没有访问权限的,只能在当前类的.m文件中访问。
协议:一堆方法的声明,只有.h文件,协议的定义以@protocol开始,以@end结束
![技术分享](https://image.cha138.com/20200614/14021773086a4e9a9b0beb03cf5c4e18.jpg)
执行协议的类要接收协议,写在NSObject后面的<>内部
![技术分享](https://image.cha138.com/20200614/985bab57682b458b9b92971548147511.jpg)
以上是关于9.类的延展的主要内容,如果未能解决你的问题,请参考以下文章