ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
### iOS中级面试题 --- #### **Block** ##### 1. block的实质是什么?一共有几种block? 都在什么情况下生成的? ##### 2. 为什么在默认的情况下无法修改被block捕获的变量? _block都做了什么? ##### 3. 模拟一下循环引用的一个情况? block实现界面反向传值如何实现? #### **Runtime** ##### 1. objc在向一个对象发送消息时,发生了什么? ##### 2. 什么时候报unrecognized selectoe错误? iOS有哪些机制避免走到这一步? ##### 3. 能否向编译后得到的类中增加实例变量? 能否向运行时创建的类中增加实例变量? 为什么? ##### 4. runtime如何实现weak变量的自动置nil? ##### 5. 给类添加一个属性后,在类结构体里哪些元素会发生变化? #### **RunLoop** ##### 1. runloop是来做什么的? runloop和线程有什么关系?主线程默认开启了runloop么?子线程呢? ##### 2. runloop的mode是用来做什么的?有几种mode? ##### 3. 为什么把NSTimer对象以NSDefaultRunLoopMode(KCFRunLoopDefaultMode)添加到主运行循环以后,滑动scrollview的时候NSTimer却不动了? ##### 4. 苹果是如何实现Autorelease Pool的? #### **类结构** ##### 1. isa指针? (对象的isa,类对象的isa,元素的isa都要说) ##### 2. 类方法和实例方法有什么区别? ##### 3. 介绍一下分类, 能用分类做什么? 内部是如何实现的? 与该类原有方法的名称相同的时候,为什么原有的方法会失效? ##### 4. 运行时能增加成员变量么? 能增加属性么?如果能如何增加?如果不能,为什么? ##### 5. objc 中向一个nil对象发送消息,将会发生什么? (返回值是对象,标量,结构体)