目標-C:iVars を @public にするか、iVars の @properties を @synthesizing しますか?プロパティはいつ使用する必要がありますか?

StackOverflow https://stackoverflow.com/questions/8984921

  •  13-11-2019
  •  | 
  •  

質問

私のクラスには、どこからでもアクセスできるようにしたいインスタンス変数がいくつかあります。そのようです:

@interface SomeObject : NSObject
{
    @public
        NSString *someString;
}
@end

@implementation SomeObject
@end

を使用してインスタンスからプロパティにアクセスできます -> C++ で行うように、次のような構文を作成します。

someObjectInstance->someString

のプロパティを作成する必要がありますか someString 外部からアクセスできるようにしたいだけなのに?私なら作成します @property のために someString 私のインターフェースでは、 @synthesize 私の実装では、ドット構文を使用してアクセスできるようになります。

役に立ちましたか?

解決

一般的に言って、データを公開したい場合は、プロパティを使用する必要があります。インスタンス変数を公開することは一般的に悪い考えです。

他のヒント

後でgetter / setterを変更することができたときにそれを実行することができるので、他の何かをしたいのではなく、それをするためのオブジェクト指向の方法です。

はい、なぜならそれを作るときにあなたがしていることは @property それを使って人々に電話をかけるように指示しています setSomeString そして someString 事実上、メソッド。たとえあなたがそうであっても @synthesizeこれらのメソッドを使用する方が、コードの品質が向上します。 できた 必要に応じて変更してください。ポインター参照だけを使用している場合、アクセスをインターセプトする必要がある場合、それはできません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top