连类比事-category和extension
2024-10-01 13:10:37
extension看起来很像一个匿名的category,但是extension和有名字的category几乎完全是两个东西。 extension在编译期决议,它就是类的一部分,在编译期和头文件里的@interface以及实现文件里的@implement一起形成一个完整的类,它伴随类的产生而产生,亦随之一起消亡。extension一般用来隐藏类的私有信息,你必须有一个类的源码才能为一个类添加extension,所以你无法为系统的类比如NSString添加extension。(详见2)
但是category则完全不一样,它是在运行期决议的。
就category和extension的区别来看,我们可以推导出一个明显的事实,extension可以添加实例变量,而category是无法添加实例变量的(因为在运行期,对象的内存布局已经确定,如果添加实例变量就会破坏类的内部布局,这对编译型语言来说是灾难性的)。
最新文章
- Ansible-Tower快速入门-6.查看tower的仪表板【翻译】
- SQLServer操作结果集
- 原密码忘了,重置MAC开机密码
- iOS:核心动画之关键帧动画CAKeyframeAnimation
- [算法] 快速排序 Quick Sort
- fourinone分布式缓存研究和Redis分布式缓存研究
- HTML解析利器-HtmlAgility学习
- Web多客户端单点登录
- 存储过程sql语句
- js延迟函数
- 苹果IOS与谷歌 android系统的UI设计原则
- LeetCode--030--串联所有单词的字串(java)
- 什么是 SaaS (Software as a Service)
- 个人博客作业-Week7
- Spring Boot 揭秘与实战(二) 数据缓存篇 - EhCache
- Java - HashTable源码分析
- 七、新时间日期 API
- jquery 根据后台传过来的值动态设置下拉框、单选框选中
- Linux 权限修改
- 苏州Uber优步司机奖励政策(12月14日到12月20日)