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

相关推荐
j7~4 小时前
【C++ 八股文】(篇四)C++11 新特性
开发语言·c++·面试·c++11·八股文
nice_lcj52018 小时前
Java Lambda 表达式入门:怎么写、怎么用、常用方法有哪些
java·开发语言·后端·面试
nice_lcj5201 天前
ThreadLocal 入门:它是怎么隔离数据的、为什么会导致内存泄漏
java·开发语言·后端·面试·并发编程·内存泄漏·threadlocal
Yuzhiyuxia1 天前
【AI Agent面试系列】上下文管理1
人工智能·面试·职场和发展
CoderYanger1 天前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)
java·数据库·spring·面试·职场和发展·java-ee·mybatis
Rain的Java大神之路1 天前
公交App上“还有2站,约5分钟”怎么实现?90%的人答错这道大厂面试题:GPS漂移、ETA不准、10万QPS热点读全拆透(附完整代码)
java·后端·面试
利威尔xu1 天前
2026-11-05-Go内存管理面试
面试·golang
aZhe的全栈知识分享2 天前
AI 还原 Figma 效果总达不到预期?先别急着让它写代码
前端·后端·面试
Fuyo_11192 天前
C++ 运行时多态与虚函数机制全面剖析【面试重点】
开发语言·c++·面试
IT规划师2 天前
一文讲透五种发布机制:滚动、蓝绿、金丝雀、红黑与 AB
后端·面试