面试题答案
一键面试ARC环境
在ARC(自动引用计数)环境下,编译器会自动管理对象的内存。当使用类扩展为类添加属性时,不需要手动管理内存。
示例代码:
#import <Foundation/Foundation.h>
@interface MyClass : NSObject
@end
@interface MyClass ()
@property (nonatomic, strong) NSString *myProperty;
@end
@implementation MyClass
@end
在ARC环境下,当MyClass
对象销毁时,myProperty
也会自动释放,无需手动处理。
MRC环境
在MRC(手动引用计数)环境下,需要手动管理属性的内存。对于strong
或retain
类型的属性,在dealloc
方法中需要手动释放。
示例代码:
#import <Foundation/Foundation.h>
@interface MyClass : NSObject
@end
@interface MyClass ()
@property (nonatomic, retain) NSString *myProperty;
@end
@implementation MyClass
- (void)dealloc {
[_myProperty release];
[super dealloc];
}
@end
在MRC环境下,在dealloc
方法中通过release
方法手动释放myProperty
的引用,以避免内存泄漏。