プロパティのセッターとゲッターは自動生成される

Objective-Cで@propertyディレクティブを用いるとセッターとゲッターが自動生成されるため、 セッターをオーバーライドする場合は自動生成されている処理を実装する必要がある。

自動生成されるセッターは以下のようになる。

MRC

retain (MRC)

- (void)setObject:(Object *)object {
    if (_object != object) {
        [_object release];
        _object = [object retain];
    }
}

copy (MRC)

- (void)setObject:(Object *)object {
    [_object release];
    _object = [object copy];
}

assign (MRC)

- (void)setInteger:(NSInteger)integer {
    _integer = integer;
}

ARC

strong/weak/assign (ARC)

- (void)setObject:(Object *)object {
    _object = object;
}

copy (ARC)

- (void)setObject:(Object *)object {
    _object = [object copy];
}