MST

星途 面试题库

面试题:Objective-C中ARC下对象的生命周期是如何管理的?

在Objective-C的ARC(自动引用计数)环境下,简要描述一个对象从创建到销毁整个生命周期内,ARC是如何管理对象的引用计数,以及何时会释放对象所占内存的?
38.8万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试
  1. 对象创建
    • 当使用allocnewcopymutableCopy等方法创建一个对象时,该对象的引用计数初始值为1。例如:MyObject *obj = [[MyObject alloc] init];,此时obj指向的对象引用计数为1。
  2. 引用计数增加
    • 当把对象赋值给一个强引用(strong)变量时,该对象的引用计数会增加1。比如:MyObject *strongRef = obj;,此时obj指向的对象引用计数变为2(因为objstrongRef都是强引用)。
    • 如果对象作为函数参数传递给一个接受强引用参数的函数,在函数内部,对象的引用计数也会增加。
  3. 引用计数减少
    • 当一个强引用变量超出其作用域或者被赋值为nil时,对应的对象引用计数减1。例如在函数内定义的强引用变量,函数结束时该变量作用域结束,对象引用计数减1。如果strongRef = nil;,那么原来strongRef指向的对象引用计数减1。
    • 当对象从一个集合(如NSArrayNSDictionary等)中移除时,该对象的引用计数也会减1。
  4. 对象销毁与内存释放
    • 当对象的引用计数变为0时,ARC会自动调用对象的dealloc方法。在dealloc方法中,会释放对象所占用的资源(如释放成员变量所占用的内存等)。
    • 一旦dealloc方法执行完毕,对象所占的内存就会被系统回收,从内存中移除。