自动参考计数

通过自动引用计数(ARC),编译器可以在需要它们的地方插入 retainreleaseautorelease 语句,因此你不必自己编写它们。它还为你编写 dealloc 方法。

手动内存管理的示例程序与 ARC 一样:

@interface MyObject : NSObject {
    NSString *_property;
}
@end

@implementation MyObject
@synthesize property = _property;

- (id)initWithProperty:(NSString *)property {
    if (self = [super init]) {
        _property = property;
    }
    return self;
}

- (NSString *)property {
    return property;
}

- (void)setProperty:(NSString *)property {
    _property = property;
}

@end
int main() {
    MyObject *obj = [[MyObject alloc] init];
    
    NSString *value = [[NSString alloc] initWithString:@"value"];
    [obj setProperty:value];

    [obj setProperty:@"value"];
}

你仍然可以覆盖 dealloc 方法来清理 ARC 未处理的资源。与使用手动内存管理时不同,你不需要调用 [super dealloc]

-(void)dealloc {
   //clean up
}