使用类扩展来隐藏类实现的细节

所谓类扩展就是像下面这样的东西



它和类别的区别就是它括号里面是空的,因此它也被称作匿名类别。
你可以在类扩展中添加属性、方法、实例变量。

关于说类扩展是什么时候被加入类中的
书中说得非常含糊,我觉得是编译期。

类扩展可以隐藏私有信息
所谓类的主接口,就是除去扩展和类别这些玩意,剩下的那些接口和实现。
类的主接口,规定了该类与其他类的一般性交互方式。
那类扩展的作用就是对原有类的接口的扩展以及类自身实现的扩展。

在类扩展中你可以重新声明原本在类中已经声明的属性。
一旦被扩展被创建成功,在运行时,那么该类的任何对象都包含了该类扩展中声明的和实现的东西。

书中说,在其他源码文件中强行调用类的私有方法是可以的,只不过编译器会发出警告,但是我试验了一下发现是会报错,连编译都过不去,更何谈调用,这作者真TM是扯淡。

不过Objective-C的运行时是可以达到的。

其实类扩展更本质的做法是你用一个单独的.h文件把类扩展的声明写在里面,然后引入到被扩展的类的.m或者.h文件中,然后你就可以在被引入的类的实现中去实现引入的类扩展中的方法了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容