相信大家都对这个名字并不陌生了,本文针对对ARC一直在使用,但对某些细节有着可能似是而非的理解的人群,顺带还会介绍一些oc runtime的一些与ARC相关的知识
首先需要明确的是ARC只针对NSObject对象层级的对象生命周期管理,其运行基理是只要某个对象仍然被strong变量指针指向,则其就不会被销毁,反之,被销毁(理论上是马上,因为在这个场合,ARC会自动插入release指令)。
对象析构的时候,实例变量怎么啦
根据 Apple development documentation 中对dealloc的描述,实例变量及property属性变量在对象释放的时候会自动被释放
NSArray对象变量赋nil的时候,里面的对象有被释放吗?
需要声明的是NSArray在添加元素时就会持有被添加元素的强引用,并在其从NSArray中移除或者NSArray本身被释放时释放此强引用(你懂的,如果此元素仍在其他地方被持有强引用,此元素是不会从内存中销毁的)。
而NSArray在被赋新值(包括 nil)的时候,其会将所有子元素尽数释放
网友评论