底层23:内存管理-面试题
2020-09-10 本文已影响0人
张无奈
使用CADisplayLink,NSTimer有什么注意点?
CADisplayLink、NSTimer 都是基于RunLoop来实现的,会对target产生强引用。
如下:
nstimer改进方法:
利用消息转发机制实现一下方法:
NSTimer还可以调用block的方法,使用__weak弱引用,解决。
介绍下内存的几大区域
讲一下你对iOS内存管理的理解
autorelease在什么时机会被释放?
方法理由局部变量,出了方法后会立即释放吗?
ARC都帮我们做了什么?
LLVM + Runtime系统相互协调作用的结果
ARC利用LLVM编译器自动帮我们生成release、retain、autorelease的代码
像弱引用的存在需要RunTime来支持。
weak指针的实现原理?
将弱引用存到一个哈希表中,到时候这个对象要销毁,就取出当前对象所对应的弱引用表,把表里的弱引用都给清除掉。