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

相关推荐
ShineWinsu4 小时前
对于JavaScript:初识JavaScript以及输入输出
java·开发语言·前端·javascript·css·面试·html
桃桃乌龙_4 小时前
RAG 深度解析:让大模型学会“开卷考试“的知识外挂
人工智能·面试
埃伊蟹黄面5 小时前
面试常问题目 —— STL
c++·面试·职场和发展·stl
2501_933670795 小时前
2027校招定价分析面试准备:应用统计学、SQL与业务判断如何结合
面试·职场和发展
David猪大卫5 小时前
【C++修炼】STL容器—模板进阶:非类型模板参数、模板特化、模板分离编译
c语言·开发语言·c++·经验分享·笔记·学习·面试
美味蛋炒饭.6 小时前
java八股面试(2)
面试·职场和发展
CesareCheung6 小时前
高级软件测试工程师面试锦集
面试·单元测试·压力测试
子林super20 小时前
MySQL三大日志(binlog、redo log和undo log)详解
面试
救救孩子把1 天前
AI面试八股文-03_3-RAG 系统面试题
人工智能·redis·面试·agent·rag