0

これは本当にばかげた初心者の質問かもしれませんが、

クラスに UIScrollview *scrollView2 などの優れたインスタンス変数がある場合、なぜ getter と setter を放棄して getter と setter をバイパスする必要があるのですか?

[self.scrollView2 addSubview:imageView];

、そしてむしろ

[scrollView2 addSubview:imageView]; 

? つまり...ゲッターを超えても問題はありません。実際、私はそれが常に進むべき道だと思っていました。しかし、すべての Apple の例で、私はそのパターンをいたるところで見逃しています。メソッドを呼び出すときに self.someInstanceVariable を使用することはめったにありません。それとも私は何か間違っていましたか?

Apple がやっているので、私は同じことをし始めましたが、知りたいのですが、なぜですか?

4

3 に答える 3

3

KVO (Key-Value Observing)およびKVC (Key-Value Coding)と関係があります。ゲッターまたはセッターをバイパスすると、値を監視しているオブジェクトはメッセージを取得しません。

于 2009-05-07T17:12:05.197 に答える
2

変数に直接アクセスするとバインディングが機能しないことがわかるまで、ゲッター/セッターもバイパスしていました。つまり、キーと値のコーディングは、getter/setter 関数を使用してプロパティにアクセスする場合にのみ機能します。

編集: KVC コンプライアンスについては、このページを参照してください。

于 2009-05-07T16:54:53.243 に答える
1

通常、initまたはdeallocではプロパティを使用しません。オブジェクトが「安全な」状態にない可能性があるため、インスタンス変数に直接アクセスすることをお勧めします。

于 2009-05-07T19:08:31.970 に答える