外部呼び出しに対してプロパティを読み取り専用にし、内部呼び出しに対して読み取り専用にする方法を知っていますか?Objective-C:外部クラス呼び出しのためにプロパティを読み取り専用にして、自己呼び出しのためにreadwriteを作成する
私は回前の.m
@interface TheClassName()
@property(nonatomic, retain) NSDate* theDate;
@end
での.h
@property(nonatomic, readonly) NSDate* theDate;
で
のように思えた気にいらを読んだけど.Mをコンパイルするとき、これは警告を発生させます"TheClassNameクラス継続のプロパティtheDate属性がクラスTheClassNameプロパティと一致しません"。
とにかく、それは動作しているようです(クラスから外には読めませんが、内部から両方を行うことができます)が、警告を避けるためには少し間違っていたはずです。 これを行う良い方法がわかっている場合...
+1、それは本当に必要になるまで、 'readwrite'をデフォルトと' nonatomic'のように削除したいでしょうか? – zoul
'readwrite'はあなたが望むものを正確に知っていることを明示します。一部の人々は、「いつも「非原子質」のマントラをiOSからCocoaに使用しています(私は確かにそうしています)。それはプロジェクト全体のポリシーかもしれません。 – bbum
また、両方の場所で「保持」を述べなければならない理由は、「保持」対「割り当て」のゲッターの「合成」のコードジェンが異なる場合があることである。したがって、プロパティの読み込みビューでの 'retain'のポリシー*は、クラスのAPI /コントラクトの一部です。 – bbum