面试题答案
一键面试局部变量
- 作用域:定义在方法内部,作用域仅限于该方法内。
- 生命周期:随着方法的调用而创建,方法结束时销毁。
- 内存管理(ARC):自动管理其内存,超出作用域时会被自动释放。
- 内存管理(MRC):栈上的局部变量不需要手动管理内存,随着函数结束自动回收;堆上通过
malloc
等分配的需要手动free
。
实例变量
- 作用域:作用域为整个类,类的所有实例方法都可以访问。
- 生命周期:与对象的生命周期相同,对象创建时实例变量被分配内存,对象销毁时实例变量内存被释放。
- 内存管理(ARC):当对象的引用计数变为0时,对象及其包含的实例变量内存自动释放。
- 内存管理(MRC):在对象的
dealloc
方法中手动释放实例变量占用的堆内存,如[ivar release]
。
静态变量
- 作用域:在定义它的文件内有效,若定义在方法内,作用域仅限于该方法。
- 生命周期:程序启动时创建,程序结束时销毁。
- 内存管理(ARC):无需考虑内存管理,因为它的生命周期与程序相同。
- 内存管理(MRC):同样无需手动管理内存,生命周期与程序相同。