分类和扩展的区别

1.分类:在不修改一个类的情况下给类增加方法,即在不知道.m的情况下给只能增加方法,但不能增加成员变量,可以添加属性,但是只会生成set和get方法的声明,不会生成成员变量,要想保存变量可以通过动态绑定的方式,同一个方法,在分类中的方法执行优先级高,同一个方法只执行一次

分类原理:原理是讲分类中的中方法、属性、协议放在category结构体里面,然后在运行时拷到对象的结构体重,但是对象的成员变量是在编译时已经分配好内存,分类在运行时加入变量会破坏对象的内存布局,因此不能在运行时添加变量,对象关联的KV对保存在一个全局的哈希表里面,当对象销毁时会释放所有关联的KV对

2.扩展:扩展有点像匿名的分类,但是它和分类是两个完全不同的东西,因为在.m中给类扩展私有的成员变量或者属性,可以扩展变量和方法,因此必须知道类的.m文件才能给类添加扩展。

扩展原理:扩展是在编译期内存就决定好了,是类的一部分

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

相关阅读更多精彩内容

友情链接更多精彩内容