ios基础

2019 iOS 面试 -中级篇之 Runtime

2019-08-21  本文已影响0人  赫子丰

1. objc在向一个对象发送消息时,发生了什么?

根据对象的isa指针找到该对象所属的类,去obj的对应的类中找方法

如果向一个nil对象发送消息,首先在寻找对象的isa指针时就是0地址返回了,所以不会出现任何错误。也不会崩溃。
参考:ios objc向一个对象发送消息时,发生了什么?

2. 什么时候会报unrecognized selector错误?iOS有哪些机制来避免走到这一步?

避免:

3. 能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?

解释:

参考:能否向编译后得到的类中增加实例变量?

4. runtime如何实现weak变量的自动置nil?

首先要搞清楚weak属性的特点:

模拟下weak的setter方法,大致如下

- (void)setObject:(NSObject *)object{ 
    objc_setAssociatedObject(self, "object", object, OBJC_ASSOCIATION_ASSIGN); 
    [object cyl_runAtDealloc:^{
        _object = nil; 
    }];
}

参考链接:runtime 相关试题解答

5. 给类添加一个属性后,在类结构体里哪些元素会发生变化?

参考链接:靠谱的 iOS 面试题

相关阅读:

1、iOS 面试题 --- 基础部分
2、iOS 面试题 --- 中级篇 Block
3、iOS 面试题 --- 中级篇 Runloop
4、iOS 面试题 --- 高级篇

上一篇 下一篇

猜你喜欢

热点阅读