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就可以避免这个问题出现。

相关推荐
黄敬峰10 小时前
Agent Memory 进阶:用 LLM 总结压缩上下文,告别"金鱼记忆"
面试
RisunJan12 小时前
后端高频面试题与解答
面试·职场和发展
数智启示录16 小时前
PostgreSQL 计划缓存实战(第 10 篇):预编译 SQL 前五次都快,第六次为什么可能变慢
经验分享·sql·缓存·postgresql·面试
windliang18 小时前
Agent Loop 的 while 循环什么时候开始不够用
人工智能·面试·开源
不要打扰75619 小时前
2027国网提前批宣讲、面试、预报名、内部笔试时间一览
面试·职场和发展
YHHLAI20 小时前
TypeScript 高级工具类型面试指南
ubuntu·面试·typescript
众人皆醒我独醉1 天前
Kubernetes GPU 调度与管理的完整机制——从节点上架到 Pod 拿到 GPU
面试·kubernetes·gpu
程序员-Benothing1 天前
MySQL 中的 Log Buffer 是什么?它有什么作用?
数据库·mysql·面试
Phil3232 天前
开源一个 Windows 实时面试助手:听译、置顶提词、按需生成英文稿
面试·github
汉堡大王95272 天前
面试官:讲讲归并排序 —— 为什么它能在面试里反复出现?
前端·javascript·面试