0

インターフェイス セクションで readonly 属性を設定すると、プロパティのセッター メソッドが「無効」になります。次の点について明確にする必要があります。

  1. _propertyName を使用して設定できる場合、読み取り専用プロパティのポイントは何ですか?
  2. プロパティが readwrite の場合、いつ _propertyName を使用しますか?

  3. また、_propertyName を使用して値を割り当てるだけでなく、ある程度の抽象化のためにセッター メソッドを使用することも理解しています。_propertyName を使用しない他の理由はありますか?

以下にサンプルコードを示します。ありがとうございました。

インターフェース部

@property (nonatomic, readonly) NSString *licensePlate;
@property (nonatomic, readonly) NSString *bodyColor;

実装セクション

-(id) initWithCarFeatures {
    self = [super init]
    if (self) {
        _licensePlate = @"XSHJDS8687";
        _bodyColor = @"blueColor";
    }
    return self;
}
4

1 に答える 1

2
  1. ポイントは「カプセル化」。他のファイルはプロパティを直接設定できません。プロパティは、特定のファイルからのみ設定できます。たとえば、 を使用initするか、特殊な方法を使用します。

  2. ほとんどの人は、(ARC を使用していない場合) メソッド_property内でのみ直接使用する必要があり、もちろん、独自のセッターとゲッターを実装している場合にのみ使用する必要があると言うでしょう。プロパティが として宣言されていても、通常はクラス拡張で宣言します。したがって、他のファイルには残りますが、それを宣言する実装ファイル (クラス) 用になります。initdeallocreadonlyreadwritereadonlyreadwrite

  3. 「継承」などの多くの理由 - セッターはオーバーライドできます。プロパティの場合copy、コピーはセッターによって処理されます。MRC (ARC ではない) では、セッターはさらに重要です (保持と解放を処理します)。

于 2014-01-07T22:09:38.843 に答える