类别(Categroy,分类,扩展类)与扩展(Extension,匿名类别,延展)

1.类别(Categroy,分类,扩展类)  其实一个名字,在刚开始接触的时候真的是差点搞蒙了

在类的原基础上扩展方法,且不可添加变量,如果扩展的方法与原始类中的方法相同,则会隐藏原始方法,且不可在扩展方法中通过super调用原始方法,这里与继承不同。

在类别中添加 @property

只做了set/get的声明,没有实现,更不会生成成员变量。

可以通过runtime添加

类别的作用:

①为现有的类添加新方法;

②将类的实现分散到多个不同文件或多个不同框架中(把一个大的类按功能划分成几块,便于维护);

③通过替换现有类中的方法,修正现有类(没有源码文件的情况下)的功能或错误

类别的局限性

①无法向现有的类中添加新的实例变量(类别没有位置容纳实例变量);

②方法名称冲突,即类别中的新方法的名称与现有类中方法名称重名,类别具有更高的优先级,类别中的方法将完全取代现有类中的方法(再也无法访问现有类中的同名方法)。



2.扩展(Extension,匿名类别,延展)

可以在类扩展中声明属性和实例变量。

类扩展声明必须在 @implementation在实现。

所以类扩展的成员变量,方法,都不能被外部方法访问。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容