目標-C:iVars を @public にするか、iVars の @properties を @synthesizing しますか?プロパティはいつ使用する必要がありますか?
-
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
これらのメソッドを使用する方が、コードの品質が向上します。 できた 必要に応じて変更してください。ポインター参照だけを使用している場合、アクセスをインターセプトする必要がある場合、それはできません。
所属していません StackOverflow