1

私の混乱を解消してください。

クラスでプロパティを定義すると

@interface Class
{
  UIScrollView * _scrollView;
}
@property (nonatomic, retain) IBOutlet UIScrollView * scrollView;
@end

@implement
@synthesize scrollView = _scrollView;
@end

実装したいときは、使用できます

_scrollView.contentSize = xxx

また

self.scrollView.contentSize = xxx

2つの説明の違いは何ですか?


ご回答ありがとうございます...

4

1 に答える 1

2

インスタンス変数への直接参照はまさにそれです。インスタンス内のフィールドへの参照であり、それがプロパティの「バッキング ストア」でもあるという事実の影響を受けません。

一方、参照は、 (読み取りの場合) または(設定の場合)self.propNameの省略形です。つまり、これらの参照はアクセサ メソッドを経由します。プロパティが として定義されている場合、これはそれほど重要ではありませんが、そうである場合は、setter メソッドがすべての保持ロジックを処理します。[self propName][self setPropName:newPropValue]assignretain

-(SomeType*) propName {...}さらに、独自のプロパティ アクセサーを実装することもできます。また、-(void) setPropName:(SomeType*)propParm {...}「遅延」初期化などの特別なことを実行させたい場合にも使用できます。

(また、プロパティはデフォルトで「パブリック」アクセスに設定され、インスタンス変数はデフォルトで「プライベート」アクセスに設定されます。)

于 2012-09-27T02:26:07.943 に答える