MST
星途 面试题库

面试题:Objective-C中MRC下对象何时释放

在Objective-C手动引用计数(MRC)环境下,假设有一个自定义类MyClass,创建了一个MyClass对象并进行了一系列操作。请描述在以下代码片段中,对象会在何时被释放,以及释放的具体原理。 MyClass *obj = [[MyClass alloc] init]; [obj doSomeTask]; [obj release];
31.6万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试
  1. 对象释放时间:当执行到[obj release]时,obj指向的MyClass对象会被释放(前提是引用计数减为0)。
  2. 释放原理
    • 在MRC环境下,[[MyClass alloc] init]操作会创建一个MyClass对象,并使该对象的引用计数初始值为1。此时,obj指针指向这个对象,对象因为被obj引用,所以引用计数为1。
    • 执行[obj doSomeTask],这只是对对象方法的调用,不会改变对象的引用计数。
    • 执行[obj release]时,对象的引用计数会减1。由于初始引用计数为1,减1后变为0。当对象的引用计数变为0时,系统会调用对象的dealloc方法,在dealloc方法中会释放对象所占用的内存空间,从而完成对象的释放。