OC学习笔记-面试题

一、OC的四种修饰方式

1.assign

assign与weak都是弱引用。assign一般用于修饰非对象类型,如INT,数字等。

2.strong

return和strong都是强引用。

strong是用于自动释放的(苹果为你管理内存时)、

3.weak

assign与weak都是弱引用。weak修饰的是对象类型,防止其循环引用,比如需要调用delegate的时候,还有就是避免循环引用的时候。

4.retain

手动管理内存时使用。手动释放的时候使用retain,这个是在MRC时代用的(非常古早,现在已经都是ARC了)。

retain与release用于管理内存

5.copy

用copy修饰NSArray就代表数组是不可变的(一定要)。仅用于NSArray

如果说是NSMutableArray,就是使用strong,这代表一个数组是可变的。


例-NSArray用什么修饰?

用copy修饰NSArray就代表数组是不可变的。

二、_block的作用是为了防止循环引用的情况出现

三、Catagory分类

用途:Catagory一般来说就是给一些类拓展一些函数,比如说我可以给系统类来添加一些函数。

比如说可以给UIImage添加Catagory。就比如使用某些第三方库的时候,用UIImage,就可以使用一些不属于系统的方法。

创建方式:创建OC文件的时候,可以选择Catagory分类,来给对象添加扩展

不希望被子类继承的函数,也可以放在这里。

四、OC中方法的消息转发机制

方法就是函数

根据指针,找到它的实例地址,然后再实例存放的地址信息中找到MethodList,然后去循环遍历它。如果没有找到,就去类对象里面找这个MethodList,如果都找不到,则重复刚才的操作,向它的父类寻找。如果依然找不到,就向他更大的父类,一直找到NSObject为止,如果一直没有的话,程序会立刻崩溃。

五、点击事件传递机制主要依赖类的哪两个方法名去实现?

hitTest与pointInside

六、在主线程里使用sync开辟主线程是会立即执行的,会导致程序直接崩溃。

如果用async去异步开辟的话,就可以避免线程阻塞的情况出现。

七、UI卡顿的原因

常出现于APP同一时间加载了过多的页面,或者是在同一时间进行了大量的计算。解决方式非常简单,就是把计算工作放在支线程中,在执行完毕的时候再刷新UI就可以避免这个问题出现。

相关推荐
Heo2 小时前
大厂前端调试不能只会debugger
前端·javascript·面试
城管不管2 小时前
重生——第九次面试2026.8.13某车一面
分布式·ai·面试·职场和发展·rabbitmq
GitLqr2 小时前
玩转 Flutter 中的 Stack 与 Positioned:解决 UI 重叠问题的实战指南
flutter·面试·全栈
windliang3 小时前
Claude Code 源码分析(十二):错误处理与自动恢复:让 Agent 稳定运行
前端·javascript·面试
2601_949950633 小时前
Java 面试准备,用练题簿把“背过八股”变成“真正会答”
java·开发语言·面试·刷题·小程序推荐
不正经学生6 小时前
C语言字符串函数进阶:安全版函数 + 错误处理 + 子串查找
c语言·开发语言·c++·算法·面试
Dr.kangder6 小时前
嵌入式面试总结(十四)——中断处理
单片机·面试·职场和发展·架构·硬件架构·嵌入式
Dr.kangder6 小时前
嵌入式面试总结(十)——流水线
单片机·嵌入式硬件·面试·职场和发展·系统架构·嵌入式
.柒宇.7 小时前
运维常见面试题_04_Nginx与DNS服务
运维·nginx·面试·dns