要回答这个问题需要知道RunLoop和AutoReleasePool的关系。
Runloop每次循环都是被一个AutoReleasePool包围着的,具体说每次Runloop循环将要结束的时候会释放当前runloop的内存占用。再创建好一个AutoReleasePool给下一次Runloop循环使用。这一点可以通过课程提供的Runloop源码得到印证。
ViewDidLoad是在主线程执行,在该方法中创建的array会加入到当次RunLoop的AutoReleasePool中,array会在当前RunLoop将要结束的时候得到内存释放。
一般错误的回答都是viewDidLoad方法结束就释放了
希望可以帮助到你