0

私はほとんどの場合、このコードを見てきました。ここでは 2 つの変数名が定義されており、実装では代入によって合成されます。このようなことをする目的は何ですか?2 つの個別の変数名を保持するように。これは一種のコンベンションですか?

Test.h

@interface Test {
  id<something> _variable1;
}

@property (nonatomic, retain)  id<something> variable2;

Test.m

@synthesize variable2 = _variable1
4

1 に答える 1

5

変数は1つだけです。名前が付けられているのvariable2は実際にはプロパティであり、これは基本的にget/setメソッドペアの構文上のショートカットです。プロパティを定義するときは、get/setメソッドを明示的に記述できます...

- (void)setVariable2:(id<something>)value {
    if (_variable1 != value) {
        [_variable1 release];
        _variable1 = [value retain];
    }
}

- (id<something>)variable2 {
    return _variable1;
}

...または、@synthesizeコンストラクトを使用して上記のメソッドを自動的に生成し、単調なタイピングを大幅に削減します。(また、オブジェクトの破棄時に_variable1を解放するコードも出力しますが、ここには含まれていません。)

ただし、これらのメソッドのいずれかをデフォルトとは異なる方法で実装したい場合があります。この場合、あなたはあなた自身を書くでしょう。一緒にミックスして@synthesize、1つのメソッドのカスタムバージョンを作成することもできます。

于 2010-10-28T10:44:56.240 に答える