面试题里的array是什么时候释放的呢? viewDidiLoad不是在主线程么 ?

来源:6-7 自动释放池相关面试问题

慕无忌3044453

2019-01-09

写回答

1回答

于海

2019-01-12

要回答这个问题需要知道RunLoop和AutoReleasePool的关系。

Runloop每次循环都是被一个AutoReleasePool包围着的,具体说每次Runloop循环将要结束的时候会释放当前runloop的内存占用。再创建好一个AutoReleasePool给下一次Runloop循环使用。这一点可以通过课程提供的Runloop源码得到印证。

ViewDidLoad是在主线程执行,在该方法中创建的array会加入到当次RunLoop的AutoReleasePool中,array会在当前RunLoop将要结束的时候得到内存释放。

一般错误的回答都是viewDidLoad方法结束就释放了

希望可以帮助到你

1
1
周小了个楠
请问下如果局部变量都是通过放入自动释放池被释放的,那么ARC的自动添加变量的release代码体现在哪里?
2019-09-27
共1条回复

资深大牛带你深度剖析ios高级面试

从BAT/TMD名企真题入手,结合源码及应用,构建完整iOS知识体系

1749 学习 · 600 问题

查看课程