1

いくつかのインスタンス変数を持つクラスがあり、これらの i-vars をドット表記プロパティを介して「読み取り専用」で使用できるように公開したいとしますが、同時に、クラス内でプロパティ ミューテーターを使用できるようにするにはドット表記。

問題は、.h ファイルで次のように宣言していることです。

@property (readonly) ....

次に、ミューテーターを自分で書いている場合でも(-(void) setMyIvar:)、プロパティが読み取り専用であるとコンパイラーが(当然のことながら)不平を言っているため、ドット表記で使用することはできません。

次のように、.m ファイル (インターフェイス拡張内) でプロパティを再宣言しようとしました。

@inteface MyClass()
@property (retain) myIvar;
@end

しかし、コンパイラはこの二重宣言を受け入れませんでした。

それを行う方法はありますか?

4

1 に答える 1

2

これを行うことができますが、次のようにする必要があります。

@property (retain,readonly) ....

あなたの実装では:

@inteface MyClass()
@property (retain,readwrite) myIvar;
@end

つまり、アクセシビリティを除けば、宣言は同じでなければなりません。

于 2011-03-10T11:01:13.393 に答える