2

Objective C コードの例では、次のようなことがよく見られます。

_myProp = newValue;

私が理解している限り、プロパティmyPropを作成すると、実際の変数が として作成され_myProp、(デフォルトでは) myProp(ゲッター) とsetMyProp(セッター) の 2 つのアクセサー メソッドが作成されます。

私の質問は、アクセサ メソッドをバイパスして変数を直接取得するサンプル コードが表示され続けるのはなぜですか? これに何か利点はありますか?

4

2 に答える 2

1

プロパティを宣言せずに、代わりにプライベート ivar を使用したい場合があります。

一方、プロパティ宣言がある場合、アクセサーの実装を除いて、ivar に直接アクセスする理由はありません。

アクセサーの副作用を回避して ivar を直接使用したい場合があります。ただし、これは通常、アーキテクチャ上の欠陥の兆候です。

于 2013-09-16T10:05:16.760 に答える
1

ivar を直接使用することが 2 回あります。

  1. ゲッターまたはセッターをオーバーライドする場合。getter または setter 内でプロパティ self.blah を使用すると、無限ループが作成されます。

  2. クラスの init メソッド内。

于 2013-09-16T10:05:45.790 に答える