2

たとえば、プロパティを持つクラスを宣言する場合:

@property float radius, diameter;

したがって、このクラスで作成される、またはこのクラスから継承するオブジェクトには、独自のインスタンスradiusdiameter権利がありますか?

そして、これはまた、彼らが独自のセッターとゲッターを持っていることを意味しますか?

私が完全に理解しようとしているのは、2つの方法で変数アクセスを処理する方法です。

1.ユーザーが元の値をいじっていないことを確認したい場合。

2.インスタンス変数のユーザーを制限したい場合、彼はアクセスできるものとできないものがあります。

tnx

4

1 に答える 1

0

最初の部分に関しては、はい、サブクラスは、パブリックである限り、そのスーパークラスのプロパティとメソッドを継承します。ゲッターとセッターを取得するためにそれらを合成することを忘れないでください。

したがって、変更できないパブリックプロパティが必要な場合は、次のようにします。

// This returns a copy - whatever the receiver does with it doesn't affect the original
@property (nonatomic, copy) BOOL someVariable;

// This declares the property as only having a getter - no setter
@property (nonatomic, readonly) NSArray *someArray;

特に指定がない限り、ヘッダーファイルで宣言されたプロパティはすべてパブリックと見なされます。プライベートプロパティ、ivar、またはメソッドが必要な場合は、クラス継続カテゴリの実装ファイルでそれらを宣言します。

// In your .m *above* the @implementation MyClass
@interface MyClass()
@property (nonatomic, strong) NSArray *myPrivateModel;
@end

スタンフォードは、ObjectiveCを学ぶために私が本当にお勧めするiTunesUで素晴らしい講義シリーズを行います

お役に立てば幸い

于 2013-02-14T01:05:54.703 に答える