底层23:内存管理-面试题

使用CADisplayLink,NSTimer有什么注意点?

CADisplayLink、NSTimer 都是基于RunLoop来实现的,会对target产生强引用。

如下:

nstimer改进方法:

利用消息转发机制实现一下方法:

NSTimer还可以调用block的方法,使用__weak弱引用,解决。



介绍下内存的几大区域


讲一下你对iOS内存管理的理解

autorelease在什么时机会被释放?

方法理由局部变量,出了方法后会立即释放吗?

ARC都帮我们做了什么?

LLVM + Runtime系统相互协调作用的结果

ARC利用LLVM编译器自动帮我们生成release、retain、autorelease的代码

像弱引用的存在需要RunTime来支持。

weak指针的实现原理?

将弱引用存到一个哈希表中,到时候这个对象要销毁,就取出当前对象所对应的弱引用表,把表里的弱引用都给清除掉。

你可能感兴趣的:(底层23:内存管理-面试题)