-1

以下について教えてください。

Q1 - プロパティにアクセスしたときに生成されるコードに関して、以下の 3 つの宣言の本質的な違いは何ですか?

@property (nonatomic, readonly, getter = getMyProp) NSString* myProp;
@property (readonly, getter = getMyProp) NSString* myProp;
- (NSString*) myProp;

Q2 -すべての状況で[object myProp]完全に同等object.myPropですか (コンパイラが文句を言わない場合)?

Q3 - それらが同等である場合、特に Apple のサンプル コードでは、角括弧形式がどこでも一般的であるのはなぜですか?

ありがとう!

4

1 に答える 1

2

(1)の場合nonatomic、値は直接返されます。暗黙atomicの の場合、戻り値は自動解放されます (戻る前にretained およびautoreleased が実行されます。まっすぐなメソッド宣言の場合、コードは生成されません。

getter=getMyPropiOS および OS X プログラミングのパターンに完全に反することに注意してください。ゲッターには接頭辞が付いていませんget

(2)[object myProp]でありobject.myProp、コード生成時には完全に同等です。 ただし、コデイン前のコンパイル中は同等ではありません。がタイプのobject.myProp場合、コンパイラはエラーになります。つまり、ドット表記では、問題のオブジェクトが明示的に型付けされ、そのメソッドを確実に実装する必要があります。objectid

(3) サンプル コードの多くは必ずしも更新されたわけではなく、(2) を除いてドットとブラケットの構文は交換可能であるため (ただし、idとにかく使用するべきではありません)、ドットに照らしてもブラケットを使用するまでのいくつかのコードがあります。 .

于 2013-07-14T01:27:08.767 に答える