登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

IOS--category与extension区别 [复制链接]

2018-7-11 17:51
KB_MoreShare 阅读:300 评论:0 赞:1
Tag:  IOScategoryextension区别

IOS--category与extension区别

中文意思为:分类、种类,顾名思义就是将一个东西更好的分类便于管理。

extension

中文意思为:扩大、伸展,同理、它更侧重的是对一个东西的扩展。


先从外部看,当你创建一个类的category时,系统会生成两个文件,"category的类的类名+你定义的匿名.h与.m"而extension只会生成一个“extension类的类名_你定义的匿名.h”为什么后者没有.m文件,这个稍后给大家 解释。

下面我们往内部看,category文件的.h与.m文件的interface与implementation后都是跟category的类的类名+(你定义的匿名),而extension文件的interface是extension的类的类名+()且没有.m文件。应用场景还没有想到,因为开发中还未用到过,如果有用到过的可以留言告知一下,欢迎大家踊跃说出自己的想法和认知。

肤浅的我们介绍完了,下面开始介绍特性上的区别了。

category是在原有的类的基础上添加方法,不可声明变量。可以不知道category的类的.m文件,主要应用场景为后期项目需要添加新功能或者其他特性。

extension是在原有类上面进行扩展,可添加方法与变量声明,但是方法的实现要在extension的类的.m文件中实现。所以必须要知道extension类的.m文件,不然无法对扩展的方法和变量进行实现和初始化。


由于博客写的匆忙,可能介绍的不是很明白,下面我大致总结一下

category:

文件名上:category的类的类名+你定义的匿名.h与.m

内部定义上:category文件的.h与.m文件的interface与implementation后都是跟category的类的类名+(你定义的匿名)

特性上:添加方法,不可声明变量。可以不知道category的类的.m文件

extenson:

文件名上:extension类的类名_你定义的匿名.h

内部定义上:extension的类的类名+()且没有.m文件

特性上:可添加方法与变量声明,但是方法的实现与变量的声明要在被extension的类的.m中实现,所以必须要知道extension类的.m文件

鉴于有的博客中写category只可添加方法不可删除方法这个区别本人不甚认同,这个需要特定条件的,因为extension的方法的添加与删除以及修改都是在知道.m的情况下,如果category知道被category的.m文件一样可以做相关的删除与修改,所以我觉得这个不应该作为两者的区别来看待的,鉴于这种说法网上流传较多,本人在此声明一下以免和我一样的菜鸟再看到之后误入歧途,我强烈希望大家能够在写博客的时候尽可能的保证自己信息的正确性,不喜欢人云亦云。欢迎大家对我进行指正和批评。

分享到:
我来说两句
facelist
您需要登录后才可以评论 登录 | 立即注册
所有评论(0)
关闭

每日头条

通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

返回顶部