MST

星途 面试题库

面试题:Objective-C中不同作用域下变量的生命周期及内存管理

假设在一个Objective-C类中有局部变量、实例变量和静态变量,描述它们各自的作用域、生命周期以及在ARC(自动引用计数)和MRC(手动引用计数)环境下的内存管理方式。
27.9万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

局部变量

  • 作用域:定义在方法内部,作用域仅限于该方法内。
  • 生命周期:随着方法的调用而创建,方法结束时销毁。
  • 内存管理(ARC):自动管理其内存,超出作用域时会被自动释放。
  • 内存管理(MRC):栈上的局部变量不需要手动管理内存,随着函数结束自动回收;堆上通过malloc等分配的需要手动free

实例变量

  • 作用域:作用域为整个类,类的所有实例方法都可以访问。
  • 生命周期:与对象的生命周期相同,对象创建时实例变量被分配内存,对象销毁时实例变量内存被释放。
  • 内存管理(ARC):当对象的引用计数变为0时,对象及其包含的实例变量内存自动释放。
  • 内存管理(MRC):在对象的dealloc方法中手动释放实例变量占用的堆内存,如[ivar release]

静态变量

  • 作用域:在定义它的文件内有效,若定义在方法内,作用域仅限于该方法。
  • 生命周期:程序启动时创建,程序结束时销毁。
  • 内存管理(ARC):无需考虑内存管理,因为它的生命周期与程序相同。
  • 内存管理(MRC):同样无需手动管理内存,生命周期与程序相同。