关于Runtime一些面试题的整理

2021-02-17  本文已影响0人  丶皮蛋菌

1.Category的实现原理?

2.isa指针的理解,对象的isa指针指向哪里?isa指针有哪两种类型?

3.Objective-C如何实现多重继承?

object-c的类没有多继承,只支持单继承,如果要实现多继承的话,可使用如下几种方式间接实现:

4.runtime如何实现weak属性?

weak此特质表明该属性定义了一种「非拥有关系」(nonowning relationship)。为这种属性设置新值时,设置方法既不持有新值(新指向的对象),也不释放旧值(原来指向的对象)。
runtime对注册的类,会进行内存布局,从一个粗粒度的概念上来讲,这时候会有一个hash表,这是一个全局表,表中使用weak指向的对象内存地址作为key,用所有指向该对象的weak指针表作为value。当此对象的引用计数为0的时候回dealloc,假如该对象内存地址为a,那么就会以a为key,在这个weak表中搜索,找到所有以a为键的weak对象,从而设置为nil。

5.讲一下OC的消息机制?

6.runtime具体应用?

7.runtime如何通过selector找到对应的IMP地址?

每一个类对象中都有一个对象方法列表(对象方法缓存)

8.简述下Objective-C中调用方法的过程?

Objective-C是动态语言,每个方法在运行时会被动态转为消息发送,即:objc_msgSend(receiver,selector),整个过程介绍如下:

9.load和initialize的区别

两者都会自动调用父类的,不需要super操作,且仅会调用一次(不包括外部显示调用)。

10.怎么理解Objective-C是动态运行时语言?

上一篇 下一篇

猜你喜欢

热点阅读