面试题

作者: 献国 | 来源:发表于2020-11-23 09:18 被阅读0次

1.Category的实现原理,以及Category为什么只能加方法不能加属性?

分类的实现原理是将Category中的方法,属性,协议数据放在category_t结构体中,然后将结构体内的方法列表拷贝到类对象的方法列表中。

Category可以添加属性,但是并不会自动生成成员变量及set get方法。因为category_t结构体中并不存在成员变量。

通过之前对对象的分析我们知道成员变量是存放在实例对象中的,并且编译的那一刻就已经决定好了。而分类是在运行时才去加载的。那么我们就无法再程序运行时将分类的成员变量中添加到实例对象的结构体中。因此分类中不可以添加成员变量。

2.Category和Extension的区别是什么?

和分类Categroy不同的是:类扩展的信息是在编译的时候已经合并在了类对象中,而分类是在运行时合并至原类中的。

3.先调用所有原类的laod方法

按照编译顺序调用(可以手动设置编译顺序)
调用子类的load之前会先调用父类的load方法
再调用分类的laod方法

4.按照编译顺序调用(可以手动设置编译顺序)
5.Category中有load方法吗?load方法是什么时候调用的?load 方法能继承吗?

Category中有load方法,load方法在程序加载了类和分类的时候就会调用,在main函数之前调用。load方法可以继承。调用子类的load方法之前,会先调用父类的load方法。一般我们不会手动去调用load方法,而是让系统去调用。

如果非要手动调用load方法,那么就会按照消息发送机制通过isa指针来寻找方法。

相关文章

  • 面试材料

    面试经验 面试题1 面试题2 面试题3 面试题4 面试题5 面试题6――数据结构 面试题7――网络 面试题8――汇...

  • 高阶面试题

    webpack面试题 面试题:webpack插件 Git面试题 面试题:git常用命令 面试题:解决冲突 面试题:...

  • this的指向的面试题

    面试题1 面试题2 面试题3 面试题4

  • 面试所涉及的问题

    面试题参考1 : 面试题 面试题参考2 : 内存管理 面试题参考3 :面试题 ...

  • Android超实用最全面试大纲(三)

    文章目录: ANR面试题 OOM面试题 Bitmap面试题 UI卡顿面试题 内存泄漏面试题 内存管理面试题 一、A...

  • Android最全面试大纲(三)

    文章目录: ANR面试题 OOM面试题 Bitmap面试题 UI卡顿面试题 内存泄漏面试题 内存管理面试题 一、A...

  • 2022年web前端面试题

    web前端面试题分为:html/css面试题、javascript面试题、vue面试题、性能优化面试题、网络方面面...

  • ios面试题

    初级面试题 中级面试题 高级面试题 swift篇

  • Android超实用最全面试大纲(四)

    文章目录: 冷启动和热启动面试题 其他优化面试题 架构模式面试题 插件化面试题 热更新面试题 进程保活面试题 Li...

  • Android最全面试大纲(四)

    文章目录: 冷启动和热启动面试题 其他优化面试题 架构模式面试题 插件化面试题 热更新面试题 进程保活面试题 Li...

网友评论

      本文标题:面试题

      本文链接:https://www.haomeiwen.com/subject/dclmiktx.html